文件概述
相信大家对文件并不陌生,它可以存储文字、图片、音乐、视频等,如图所示。总之,文件是数据的集合,可以有不同的类型。
按数据的组织形式,文件大致可以分为如下两类。
1. 文本文件
文本文件是一种由若干字符构成的文件,可以用文本编辑器进行阅读或编辑。以txt、py、html等为后缀的文件都是文本文件。
2. 二进制文件
二进制文件一般是指不能用文本编辑器阅读或编辑的文件。以mp3、mp4、png等为后缀的文件都是二进制文件,如果想要打开或修改这些文件,必须通过特定软件进行,比如用Photoshop软件可以编辑图像文件。
从本质上讲,文本文件也是二进制文件,因为计算机处理的全是二进制数据。
文件操作
通常需要经过3个步骤:打开文件、读或写数据、关闭文件。
打开文件
对文件所有的操作都是在打开文件之后进行的,打开文件使用open()函数来实现。
open(file[, mode = 'r' [,...]])
该函数返回一个文件对象,通过它可以对文件进行各种操作,参数列表中参数的说明如表所示。
例如打开文件名为test.txt文件,具体示例如下:
f1 = open('test.txt') # 打开当前目录下的 test.txt 文件
f2 = open('../test.txt') # 打开上级目录下的 test.txt 文件
f3 = open('E:/python/test.txt') # 打开 E:/python 目录下的 test.txt 文件
示例中使用open()函数打开文件时使用只读模式打开,此时必须保证文件是存在的,否则会报文件不存在的错误。
Python中打开文件的模式有多种,具体如表所示。
在表中,'r’表示从文件中读取数据,'w‘表示向文件中写入数据,'a‘表示向文件中追加数据,'+’可以与以上3种模式(‘r’、‘w’、‘a’)配合使用,表示同时允许读和写。另外,当需要处理二进制文件时,则需要提供’b’给mode参数,例如’rb’用于读取二进制文件。
关闭文件
当对文件内容操作完以后,一定要关闭文件,这样才能保证所修改的数据保存到文件中,同时也可以释放内存资源供其他程序使用。
文件对象名.close()
接下来演示文件的打开与关闭,如例所示。
1 f = open('test.txt', 'a+') # 以追加模式读写 test.txt
2 f.close() # 关闭文件
处需注意,即使使用了close()方法,也无法保证文件一定能够正常关闭。例如,在打开文件之后和关闭文件之前发生了错误导致程序崩溃,这时文件就无法正常关闭。因此,在管理文件对象时推荐使用with关键字,可以有效地避免这个问题,具体示例如下:
with open('test.txt', 'r+') as f:
# 通过文件对象 f 进行读写操作
使用with-as语句后,就不需要再显式使用close()方法。另外with-as语句还可以打开多个文件,具体示例如下:
with open('test1.txt', 'r+') as f1, open('test2.txt', 'a+'