目录
1. 文本文件和二进制文件
1.1 文本文件
文本文件存储的是普通“字符”文本(python 默认为unicode 字符集),可使用记事本程序打开。
1.2 二进制文件
二进制文件以“字节”存储数据内容,必须使用专用软件进行解码,无法用记事本程序打开。常见的二进制文件有:MP4 视频文件、MP3 音频文件、JPG 图片、doc 文档 等。
2. 创建文件对象open()
open()函数用于创建文件对象,基本语法格式如下:
open(文件名[,打开方式])
1)文件名可以录入全路径,如果只含文件名,则代表在当前目录下的文件。
2)若未增加模式“b”,则默认创建的是文本文件对象,处理的基本单元为“字符”,否则创建的是二进制文件对象,处理的基本单元为“字节”。
3. 文本文件的写入
3.1 基本的文件写入操作
文本文件的写入一般包括三个步骤:
1)创建文件对象
2)写入数据
3)关闭文件对象
3.2 write()/writelines() 写入数据
write(a):将字符串a 写入到文件中;
writelines(b):将字符串列表写入文件中,不添加换行符。
3.3 close() 关闭文件流
由于文件底层由操作系统控制,因此必须显式调用close()方法关闭已打开的文件对象。当调用close()方法时,首先会将缓冲区数据写入文件,再关闭文件,释放文件对象。
【注】为确保打开的文件对象正常关闭,一般结合异常机制中的 finally 或 with 关键字实现。
3.4 with 语句(上下文管理器)
with 关键字(上下文管理器)可以自动管理上下文资源,不论出于什么原因跳出with 块,都可以确保文件正确的关闭,并在代码块执行完毕后自动还原进入该代码块时的现场。
4. 文本文件的读取
文件的读取一般使用如下三个方法:
1)read([size]):
size为可选参数,表示从文件中读取size 个字符,并作为结果返回。若没有size 参数,则读取整个文件。若读取到文件末尾,则会返回空字符串。
2)readline():
读取一行内容作为结果返回。若读取到文件末尾,则会返回空字符串。
3)readlines():
将文本文件中的每一行作为一个字符串存入列表中,返回该列表。
5. 二进制文件的读取和写入
二进制文件的处理流程与文本文件基本一致,只是需要指定二进制模式,从而创建出二进制文件对象,如:
f = open(r"d:\a.txt", 'wb') #可写的、重写模式的二进制文件对象
f = open(r"d:\a.txt", 'ab') #可写的、追加模式的二进制文件对象
f = open(r"d:\a.txt", 'rb') #可读的二进制文件对象
创建好二进制文件对象后,仍然可以使用write()、read()实现文件的读写操作。
6. 使用 pickle 序列化
1)序列化:将对象转化成“串行化”的数据形式,从而存储到硬盘或通过网络传输到其他地方;
2)反序列化:与序列化相反的过程,将读取到的“串行化数据”转化成对象。
可以使用 pickle 模块中的函数,实现序列化和反序列操作:
pickle.dump(obj, file) #obj 为要被序列化的对象,file 是存储的文件
pickle.load(file) #从file 读取数据,反序列化成对象
7. os、os.path 模块
7.1 os 模块
可以直接对操作系统进行操作,如:
os.system:直接调用系统的命令;
os.startfile:直接调用可执行文件。
7.2 os.path 模块
os.path 模块提供了目录相关(路径判断、路径切分、路径连接、文件夹遍历)的操作。
7.3 walk() 方法
walk()递归遍历所有文件和目录,返回一个含有三个元素的元组(dirpath, dirnames, filenames),其中:
1)dirpath:要列出指定目录的路径;
2)irnames:目录下的所有文件夹;
3)filenames:目录下的所有文件。