文件操作
打开文件
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file:打开的文件名称。
mode:打开文件后的处理方式。模式见下表。
buffering:读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区大小。默认值是缓存模式。
encoding:对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如GBK、utf8、CP936等。
模式 | 说明 |
---|---|
r | 读模式(默认模式,可省略),如果文件不存在则抛出异常 |
w | 写模式,如果文件已存在,先清空原有内容 |
x | 写模式,创建新文件,如果文件已存在则抛出异常 |
a | 追加模式,不覆盖文件中原有内容 |
b | 二进制模式(可与其他模式组合使用) |
t | 文本模式(默认模式,可省略) |
+ | 读、写模式(可与其他模式组合使用) |
上下文管理with语句
1 | with open(filename, mode, encoding) as fp: |
文件对象常用属性
属性 | 说明 |
---|---|
buffer | 返回当前文件的缓冲区对象 |
closed | 判断文件是否关闭,若文件已关闭则返回True |
fileno | 文件号,一般不需要太关心这个数字 |
mode | 返回文件的打开模式 |
name | 返回文件的名称 |
文件对象常用方法
方法 | 功能说明 |
---|---|
close() | 把缓冲区的内容写入文件,同时关闭文件,并释放文件对象 |
detach() | 分离并返回底层的缓冲,底层缓冲被分离后,文件对象不再可用,不允许做任何操作 |
flush() | 把缓冲区的内容写入文件,但不关闭文件 |
read([size]) | 从文本文件中读取size个字符(Python 3.x)的内容作为结果返回,或从二进制文件中读取指定数量的字节并返回,如果省略size则表示读取所有内容 |
readable() | 测试当前文件是否可读 |
readline() | 从文本文件中读取一行内容作为结果返回 |
readlines() | 把文本文件中的每行文本作为一个字符串存入列表中,返回该列表,对于大文件会占用较多内存,不建议使用 |
seek(offset[, whence]) | 把文件指针移动到新的字节位置,offset表示相对于whence的位置。whence为0表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算,默认为0 |
seekable() | 测试当前文件是否支持随机访问,如果文件不支持随机访问,则调用方法seek()、tell()和truncate()时会抛出异常 |
tell() | 返回文件指针的当前位置 |
truncate([size]) | 删除从当前指针位置到文件末尾的内容。如果指定了size,则不论指针在什么位置都只留下前size个字节,其余的一律删除 |
write(s) | 把s的内容写入文件 |
writable() | 测试当前文件是否可写 |
writelines(s) | 把字符串列表写入文本文件,不添加换行符 |
序列化
所谓序列化,简单地说就是把内存中的数据在不丢失其类型信息的情况下转成对象的二进制形式的过程,对象序列化后的形式经过正确的反序列化过程应该能够准确无误地恢复为原来的对象。
Python中常用的序列化模块有struct、pickle、marshal和shelve。
pickle模块
1 | import pickle |
struct模块
1 | import struct |