我们在前面的学习中,不管是学习哪种数据类型的操作,当我们在程序测试的时候使用的数据都没有进行保存,如果我们要统计分析数据的相关性,那么我们就需要将数据保存到本地文件中,在Python中提供了访问文件、访问目录、读取文件和写入文件的操作,Python的文件对象也被称为类似文件对象或者流,本节我们先进行文件操作的相关学习。
1. 创建和打开文件
我们在创建或者打开文件的时候需要使用到open()函数,它的语法结构为:
file=open(filename,mode=’r’,buffering=-1,encoding=None,errors=None,newline=None,closefd=True, openr=None)
在这些参数里,我们常用到的有filname和mode,其余的参数大家可以作简单的了解。
1) filename
filename为要被创建或者打开的文件,使用单引号或者双引号,如果和当前文件在同一文件夹下,可直接写文件的名字,如果不在则要输入绝对路径。
2) mode
mode为参数的设置模式,指定了文件的打开方式,默认打开方式为只读(r),常用的mode参数有r、rb、wb、xb、ab和rt、wt、xt、at,分别对应了二进制文件和文本文件,在使用的时候t可以省略。
3) buffering
可选参数,可以设置缓冲模式,如果为-1则自动设置缓冲区,通常为4096或8192个字节,如果为0则关闭缓冲区直接写入文件中。
4) Encoding和errors
前者为打开文件的编码方式,后置指定编码错误的时候处理方式。
5) newline
换行方式。
6) closefd
文件描述时使用。
7) opener
文件描述时使用。
我们通过例子来创建一个文件。
file = open('test.txt','w')
file.write('第一次写入')
file = open('test.txt','r+')
file.write('第二次写入覆盖第一次写入')此时我们可以发现在当前目录下多了一个test.txt的文件,我们打开它。


我们可以发现文本中的内容为我们第二次写入的内容,因为第一次我们是创建了这个文件,然后第二次我们再次打开这个文件,打开方式为可覆盖的方式,第二次我们写入的内容也就覆盖了我们第一次写入的内容,下面表格中统计了常用的打开方式。
| 参数 | 方式 | 文件 |
| r | 只读模式 | 需存在 |
| rb | 二进制格式(打开)、只读模式 | 需存在 |
| R+ | 可读可写入模式,覆盖当前文本内容 | 需存在 |
| rb+ | 二进制格式(打开)、读写模式 | 需存中 |
| w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。 | 存在则覆盖,不存在新建 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 | 存在则覆盖,不存在新建 |
a | 追加模式打开文件,在文件末尾可写入 | |
ab | 二进制格式(打开)、后同上 | |
a+ | 以读写模式打开、末尾追加 | |
ab+ | 二进制格式(打开)、后同上 |
2.读写文件
读文件需要用到readline或readlines函数,写文件需要用到write函数,具体会在后续小结为大家讲解
3. 关闭文件
我们可以在写入之后需要文件关闭掉,以保证文件中的内容不被恶意插件修改,关闭的方式为:
file.close()
在文件使用的末尾添加即可。
3. 总结
关于文件的创建和打开,我们一定要注意它的打开或者创建方式,这点对我们后续的文件操作十分重要,下一节我们学习文件的读取。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程