情形简介:

有时我们需要把数据永久存储起来,随时使用随时读取。例如,我们通过程序建立的列表、字典等数据,当程序结束时,需要把这些数据存储到文件中,当程序再次启动时,可以把这些数据读入到程序中,避免这些数据的重新录入。要实现上面的功能,我们该怎么做呢?

要把列表、字典等数据永久存储起来,就需要用到文件。文件一般都存储在磁盘中,电脑中存储的图片、资料、音视频等都是以文件方式存储的,每个文件都有一个名称,可以根据文件的名称来选择打开或存储到某一文件。当计算机中的文件很多时,用户使用起来会非常不方便,为此又引入了文件目录,每一个目录就是一个存储文件的

集合,目录下面又有子目录,形成层级目录。打开电脑查看盘符时,会看到盘符下面有目录也有文件,目录里面也有文件或目录。

在Python语言中,负责文件操作的称为文件对象,文件对象不仅可以访问存储在磁盘中的文件,也可以访问网络文件。文件对象通过open函数得到,获取文件对象后,就可以使用文件对象提供的方法来读写文件。

应用Python提供的open函数可以返回文件对象。open函数提供了输入/输出操作的通用接口,open函数成功打开文件后会返回一个文件对象,打开失败时会抛出异常IOError。

 

open函数的基本语法如下:

open(name[, mode[, buffering]])

参数说明:

  • name : 一个包含了你要访问的文件名称的字符串值。

  • mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

  • buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

 

不同模式打开文件的完全列表:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

 

举些例子:

 

以w方式写入

>>> f = open('1.txt','w')
>>> f.write('this is a test')
14
>>> f.close()
>>> g = open('1.txt','r')
>>> g.readline()
'this is a test'

 文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

 f.close()

 

 

r模式只能打开已存在的文件,当打开不存在的文件时,open函数会抛出异常。

python中open函数的用法_文件指针

 

 

当一个需要打开的文件名称不带路径时,open函数会在Python

程序运行的当前目录寻找该文件,在当前目录下如果没有找到该文件,open函数抛出异常IOError。程序输出结果如下图所示。

python中open函数的用法_抛出异常_02

 

 

如果需要创建一个新的文件,在open函数中可以使用w+模式,用w+模式打开文件时,如果该文件不存在,则会创建该文件,而不会抛出异常。

python中open函数的用法_抛出异常_03

 

 

上面的案例代码打开D盘下的test.txt文件,如果D盘目录下没有test.txt文件,open函数将创建test.txt文件;若D盘目录下有test.txt文件,open函数会打开该文件,但文件原有内容被清空。程序输出结果如下图所示。

python中open函数的用法_pythhon open函数_04