详细讲解Python中的文件I/O操作


Posted in Python onMay 24, 2015

 本章将覆盖所有在Python中使用的基本I/O功能。有关更多函数,请参考标准Python文档。
打印到屏幕上:

产生输出最简单的方法是使用print语句,可以通过用逗号分隔的零个或多个表达式。该函数将传递到一个字符串表达式,并将结果写到标准输出,如下所示:

#!/usr/bin/python

print "Python is really a great language,", "isn't it?";

这将产生结果输出在标准屏幕上,结果如下:

Python is really a great language, isn't it?

读取键盘输入:

Python提供了两个内置的函数来读取一行,从标准输入,默认情况下是来自键盘的文本。这些函数包括:

  •     raw_input
  •     input

raw_input 函数:

raw_input([prompt])函数从标准输入读取一行并返回一个字符串(去掉结尾的换行)。

#!/usr/bin/python

str = raw_input("Enter your input: ");
print "Received input is : ", str

这将提示您输入字符串,它会在屏幕上显示相同的字符串。当输入“Hello Python!”,它的输出是这样的:

Enter your input: Hello Python
Received input is : Hello Python

input函数:

input([prompt]) 函数相当于raw_input,只是它假设输入的是一个有效的Python表达式,并返回计算结果。

#!/usr/bin/python

str = input("Enter your input: ");
print "Received input is : ", str

对所输入这将产生结果如下:

Enter your input: [x*5 for x in range(2,10,2)]
Recieved input is : [10, 20, 30, 40]

打开和关闭文件:

到现在为止,已经了解读取和写入标准输入和输出。现在,我们看看如何用实际数据文件。

Python提供了基本的函数和必要在默认情况下对文件进行操作的方法。可以使用一个文件对象file来做大部分文件操作。
open 函数:

想要读取或写入文件,必须使用Python内置的open()函数来打开它。该函数创建一个文件对象,这将用来调用与之关联的其他支持方式。
语法:

file object = open(file_name [, access_mode][, buffering])

下面是参数的详细信息:

  •     file_name: file_name参数是一个字符串值,包含您要访问的文件的名称。
  •     access_mode: access_mode决定了文件必须被打开,即,读,写,追加等的可能值是下表中给定的一个完整的列表的模式。这是可选参数,默认文件存取方式为read (r)。
  •     buffering: 如果缓冲值被设置为0时,没有缓冲将发生。如果该缓冲值是1,行缓冲会在访问一个文件来执行。如果指定的缓冲值为大于1的整数,则缓冲作用将与所指示的缓冲区的大小进行。如果为负,则缓冲区的大小是系统默认(默认行为)。

这里是打开一个文件的不同模式的列表:

详细讲解Python中的文件I/O操作

 file 对象属性:

一旦文件被打开,文件对象可以得到有关该文件的各种信息。

下面是文件对象相关的所有属性的列表:

详细讲解Python中的文件I/O操作

 例子:

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name
print "Closed or not : ", fo.closed
print "Opening mode : ", fo.mode
print "Softspace flag : ", fo.softspace

这将产生以下结果:

Name of the file: foo.txt
Closed or not : False
Opening mode : wb
Softspace flag : 0

close() 方法:

一个文件对象的close()方法刷新未写入的信息,并关闭该文件的对象,在这之后没有数据内容可以执行写入。

Python自动关闭,当文件的引用对象被重新分配给另外一个文件。它是使用close()方法来关闭文件是一个很好的做法。
语法:

fileObject.close();

例子:

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name

# Close opend file
fo.close()

这将产生以下结果:

Name of the file: foo.txt

读取和写入文件:

file对象提供了一组访问方法。我们来看看如何使用read()和write()方法来读取和写入文件。
write() 方法:

write()方法写入字符串到任何一个打开的文件。要注意的是Python字符串可以具有二进制数据,而不仅仅是文字。

write()方法不要将换行字符('\n')添加到字符串的结尾:
语法:

fileObject.write(string);

这里,传递的参数是要写入到打开的文件的内容。
例子

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
fo.write( "Python is a great language.\nYeah its great!!\n");

# Close opend file
fo.close()

上面的方法会创建 foo.txt 文件,并会将给定的内容写在该文件中,并最终将关闭该文件。

Python is a great language.
Yeah its great!!

read() 方法:

read()方法读取一个打开的文件的字符串。要注意的是Python字符串可以具有二进制数据,而不仅仅是文本。
语法

fileObject.read([count]);

这里,传递的参数是从打开的文件中读出的字节数。此方法从该文件的开头读取,如果计数丢失,那么它会尝试尽可能多地读取,直到文件的末尾。
例子:

这里以一个文件foo.txt作为例子,这是在上面创建的。

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend file
fo.close()

这将产生以下结果:

Read String is : Python is

文件位置:

tell()方法告诉该文件中的当前位置;换句话说,下一个读取或写入将发生在从该文件的开头的字节数。

seek(offset[, from]) 方法会更改当前的文件位置。偏移参数指示要移动的字节数。从该参数指定字节将被移至参考点。

如果from被设置为0,这意味着使用该文件的开始处作为基准位置,设置为1则是使用当前位置作为基准位置,如果它被设置为2,则该文件的末尾将被作为基准位置。
例子

让我们以一个文件foo.txt,这是上面创建。

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str

# Check current position
position = fo.tell();
print "Current file position : ", position

# Reposition pointer at the beginning once again
position = fo.seek(0, 0);
str = fo.read(10);
print "Again read String is : ", str
# Close opend file
fo.close()

这将产生以下结果:

Read String is : Python is
Current file position : 10
Again read String is : Python is

重命名和删除文件:

Python的os模块提供了一些方法,可以帮助执行文件处理操作,如重命名和删除文件。

要使用这个模块,需要先导入它,然后调用相关的功能。
rename() 方法:

rename()方法有两个参数,当前文件名和新文件名。
语法:

os.rename(current_file_name, new_file_name)

例子

以下是例子来重命名文件test1.txt:

#!/usr/bin/python
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

remove() 方法:

可以使用remove()方法通过提供参数作为文件名称作为要删除的文件。
语法:

os.remove(file_name)

例子

以下为示例删除现有文件test2.txt:

#!/usr/bin/python
import os

# Delete file test2.txt
os.remove("text2.txt")

Python中的目录:

所有的文件都包含不同的目录中,而在Python中处理这些没有问题。os模块有几种方法,可以帮助创建,删除和更改目录。
mkdir() 方法:

可以使用os模块的mkdir()方法在当前目录下创建目录。需要提供参数,这个方法包含的目录要创建的名称。
语法:

os.mkdir("newdir")

例子:

以下为示例在当前目录下创建test目录如下所示:

#!/usr/bin/python
import os

# Create a directory "test"
os.mkdir("test")

chdir() 方法:

可以使用chdir()方法来改变当前目录。chdir()方法接受一个参数,那就是要成为当前目录的目录的名称。
语法:

os.chdir("newdir")

例子:

下面是一个进入“/home/newdir”目录的例子:

#!/usr/bin/python
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

getcwd() 方法:

getcwd()方法显示当前的工作目录。
例子:

os.getcwd()

例子:

以下是例子给定为当前目录:

#!/usr/bin/python
import os

# This would give location of the current directory
os.getcwd()

rmdir() 方法:

rmdir()命令方法删除目录,它是通过方法的参数。

在删除一个目录,它的所有内容应该被删除。
语法:

os.rmdir('dirname')

例子

下面是一个例子删除“/tmp/test”目录。它是必需的,得到的目录完全的名称,否则将搜索在当前目录中的目录。

#!/usr/bin/python
import os

# This would remove "/tmp/test" directory.
os.rmdir( "/tmp/test" )
Python 相关文章推荐
Eclipse + Python 的安装与配置流程
Mar 05 Python
详解Python3中的Sequence type的使用
Aug 01 Python
Python中内置的日志模块logging用法详解
Jul 12 Python
python对json的相关操作实例详解
Jan 04 Python
python使用Flask操作mysql实现登录功能
May 14 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
pandas中apply和transform方法的性能比较及区别介绍
Oct 30 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Django Admin中增加导出CSV功能过程解析
Sep 04 Python
OpenCV哈里斯(Harris)角点检测的实现
Jan 15 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
详解在Python中处理异常的教程
May 24 #Python
Python中关于使用模块的基础知识
May 24 #Python
详解Python中的各种函数的使用
May 24 #Python
Python标准库之Sys模块使用详解
May 23 #Python
Python OS模块常用函数说明
May 23 #Python
在Python中操作时间之tzset()方法的使用教程
May 22 #Python
详解Python中time()方法的使用的教程
May 22 #Python
You might like
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
9个JavaScript评级/投票插件
2010/01/18 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
Python help()函数用法详解
2014/03/11 Python
Python入门篇之面向对象
2014/10/20 Python
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
python连接MySQL数据库实例分析
2015/05/12 Python
python psutil库安装教程
2018/03/19 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
python 切换root 执行命令的方法
2019/01/19 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
司法助理专业自荐书
2014/06/13 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS