文章目录
1、文件操作的步骤
想一想:
如果想用word
编写一份简历,应该有哪些流程呢?
- 打开word软件,新建一个word文件
- 写入个人简历信息
- 保存文件
- 关闭word软件
同样,操作文件的整体过程与使用word编写一份简历的过程是很相似的
- 打开文件,或者新建立一个文件
- 读/写数据
- 关闭文件
2、打开文件
打开或新建文件
在Python
中,想要操作文件需要先创建或者打开指定的文件并创建文件对象,可以通过内置的open()函数实现。open()
函数的基本语法格式如下:
file = open(filename[,mode[,buffering]])
参数说明:
file
:被创建的文件对象。filename
:要创建或打开文件的文件名称,需要使用单引号或双引号括起来。如果要打开的文件和当前文件在同一个目录下,那么直接写文件名即可,否则需要指定完整路径。例如,要打开当前路径下的名称为status.txt
的文件,可以使用“status.txt
”。mode
:可选参数,用于指定文件的打开模式,其参数值如表1所示。默认的打开模式为只读(即r
)。buffering
:可选参数,用于指定读写文件的缓冲模式,值为0
表示不缓存;值为1
表示缓存;如果大于1
,则表示缓冲区的大小。默认为缓存模式。
访问模式
rb
、wb
、ab
:一般对二进制文件进行操作。
文本文件和二进制文件
文本文件:编辑器可以编辑的任何文件,例如txt
文件、py
文件。
二进制文件:例如图片、音频、视频等。
文件都是以二进制形式保存在硬盘中的。
使用Open()方法打开一个不存在的文件时先创建该文件
在默认的情况下,使用open()
函数打开一个不存在的文件,会抛出如图1所示的异常。
图1 打开的文件不存在时抛出的异常
要解决如图1所示的错误,主要有以下两种方法:
在当前目录下(即与执行的文件相同的目录)创建一个名称为status.txt
的文件。
在调用open()
函数时,指定mode
的参数值为w
、w+
、a
、a+
。这样,当要打开的文件不存在时,就可以创建新的文件了。
f1 = open('test.txt','w')
新创建的文件没有任何内容,大小为0KB。这是因为现在只是创建了一个文件,还没有向文件中写入任何内容。
使用Open()方法以二进制形式打开文件
使用open()函数不仅可以以文本的形式打开文本文件,而且还可以以二进制形式打开非文本文件,如图片文件、音频文件、视频文件等。例如,创建一个名称为picture.png的
图片文件(如图2所示),并且应用open()函数以二进制方式打开该文件。
图2 打开的图片文件
以二进制方式打开该文件,并输出创建的对象的代码如下:
file = open('picture.png','rb') # 以二进制方式打开图片文件
print(file) # 输出创建的对象
执行上面的代码后,将显示如图3所示的运行结果。
图3 以二进制方式打开图片文件
从图3中可以看出,创建的是一个BufferedReader
对象。对于该对象生成后,可以再应用其他的第三方模块进行处理。例如,上面的BufferedReader
对象是通过打开图片文件实现的。那么就可以将其传入到第三方的图像处理库PIL
的Image
模块的open
方法中,以便于对图片进行处理(如调整大小等)。
使用Open()方法打开文件时指定编码方式
在使用open()
函数打开文件时,默认采用GBK
编码,当被打开的文件不是GBK
编码时,将抛出如图4所示的异常。
图4 抛出Unicode解码异常
解决该问题的方法有两种,一种是直接修改文件的编码,另一种是在打开文件时,直接指定使用的编码方式。推荐采用后一种方法。下面重点介绍如何在打开文件时指定编码方式。
在调用open()
函数时,通过添加encoding='utf-8'
参数即可实现将编码指定为UTF-8
。如果想要指定其他编码,可以将单引号中的内容替换为想要指定的编码即可。
例如,打开采用UTF-8
编码保存的notice.txt
文件,可以使用下面的代码:
file = open('notice.txt','r',encoding='utf-8')