一、文件的分类及其表示形式、打开方式
1、分类:
按文件中数据的组织形式可以把文件分为文本文件和二进制文件。
1)文本文件
文本文件存储的是常规字符串,由若干文本行组成,通常每行以换行符“\n”结尾。文本文件可以使用字处理软件,如gedit、记事本进行编辑。
对于 read()、write() 以及其他读写方法,当读写操作完成之后,都会自动移动文件指针,如果需要对文件指针进行定位,可以使用 seek() 方法,如果需要获知文件指针当前的位置可以使用 tell() 方法。
2)二进制文件
二进制文件把对象内容以字节串(bytes)进行存储,无法使用记事本或其他普通文本处理软件直接进行编辑,也无法使用 Python 的文件对象之间读取和理解二进制文件的内容,需要使用专门的软件进行解码后读取、显示、修改或执行。
必须正确理解二进制文件结果和序列化(把内存中的数据在不丢失其类型信息的情况下转成对象的二进制形式的过程,对象序列化后的形式经过正确的反序列化应能够准确无误地恢复为原来的对象)规则,才能准确理解其中内容并且设计正确的反序列化规则。
Python 中常用的序列化模块有:pickle(将程序中运行的对象信息永久的保存到文件中去)
struct(主要用来处理 C 结果数据,读入时先转换为 Python 的字符串类型,然后转换为 Python 的结构化类型)
json
marshal(可以进行对象的序列化和反序列化)
shelve(像字典赋值一样写入二进制文件)
2、表示形式:
无论是文本文件还是二进制文件,其操作流程基本都是一致的,即:首先打开文件并创建文件对象,然后通过该文件对象对文件内容进行读取、写入、删除、修改等操作,最后关闭文件并保存文件内容。Python 内置了文件对象,通过 open() 函数即可以指定模式打开指定文件并创建文件对象:
文件对象名 = open(文件名[, 打开方式[, 缓冲区]])
缓冲区制定了文件读写文件的缓存模式,数值 0 表示不缓存,数值 1 表示缓存,如大于 1 则表示缓冲区的大小,默认值是缓存模式。
3、打开方式:
r:读模式
w:写模式
a:追加模式
b:二进制模式(可与其他模式组合使用)
+:读、写模式(可与其他模式组合使用)
文件对象属性:
- closed:判断文件是否关闭,若文件被关闭,则返回 True
- mode:返回文件的打开模式
- name:返回文件的名称
文件对象常用方法:
flush():把缓冲区的内容写入文件,但不关闭文件
close():把缓冲区的内容写入文件,同时关闭文件,并释放文件对象
read([size]):从文件中读取 size 个字符的内容作为结果返回,如果省略 size,则表示一次性读取所有内容
readline():从文本文件中读取一行内容作为结果返回
readlines():把文本文件中的每行文本作为一个字符串存入列表中,返回该列表
readable():测试是否可读
write(s):把字符串 s 的内容写入文件
writelines(s):把字符串列表写入文本文件,不添加换行符
二、常用文件处理函数
1、文件级操作
- os 模块提供了使用操作系统功能和访问文件习题的简便方法,以及大量文件级操作的方法。
access(path, mode):按照 mode 指定的权限访问文件
open(path, flags, mode = 0o777, *, dir_fd = None):按照 mode 指定的权限打开文件,默认权限为可读、可写、可执行
remove(path):删除指定文件
rename(src, dst):重命名文件或目录
stat(path):返回文件的所有属性
fstat(path):返回打开的文件的所有属性
listdir(path):返回 path 目录下的文件和目录列表
- os.path 模块提供了大量用于路径判断、切分、连接以及文件夹遍历的方法。
abspath(path):返回绝对路径
dirname(p):返回目录的路径
exists(path):判断文件是否存在
getatime(filename):返回文件的最后访问时间
getctime(filename):返回文件的创建时间
getmtime(filename):返回文件的最后修改时间
getsize(filename):返回文件的大小
isabs(path):判断 path 是否为绝对路径
isdir(path):判断 path 是否为目录
isfile(path):判断 path 是否为文件
2、目录操作
mkdir(path[, mode = 0777]):创建目录
makedirs(path1/path2···, mode = 511):创建多级目录
rmdir(path):删除目录
removedirs(path1/path2/···):删除多级目录
listdir(path):返回指定目录下的文件和目录信息
getcwd():返回当前工作目录
chdir(path):把 path 设为当前工作目录
walk(top, topdown = True, onerror = None):遍历目录树,该方法返回一个元组,包括三个元素:所有路径名、所有目录列表与文件列表