文件读写是最基本的 IO 操作,Python 通过内建函数 open
打开文件,然后通过 read
方法读取文件,write
方法写入文件,最后使用 close
方法关闭文件。
r
表示读,如果文件不存在则会报错
w
表示写,如果文件已经存在则会清空原文件
a
表示追加,打开文件时偏移量在文件末尾
+
表示读写
b
表示二进制模式,常用于非文本文件,例如图片、可执行文件等
模式 | 说明 | 文件存在 | 文件不存在 | 初始偏移 | 返回值类型 |
---|---|---|---|---|---|
r |
只读 | 打开文件 | 报错 FileNotFoundError |
文件开头 | str |
w |
只写 | 清空文件 |
新建文件 | 文件开头 | str |
a |
追加写 | 打开文件 | 新建文件 | 文件末尾 |
str |
r+ |
读写 | 打开文件 | 新建文件 | 文件开头 | str |
w+ |
读写 | 清空文件 |
新建文件 | 文件开头 | str |
a+ |
追加读写 | 打开文件 | 新建文件 | 文件末尾 |
str |
rb |
只读 | 打开文件 | 报错 FileNotFoundError |
文件开头 | byets |
wb |
只写 | 清空文件 |
新建文件 | 文件开头 | byets |
ab |
追加写 | 打开文件 | 新建文件 | 文件末尾 |
byets |
rb+ |
读写 | 打开文件 | 报错 FileNotFoundError |
文件开头 | byets |
wb+ |
读写 | 清空文件 |
新建文件 | 文件开头 | byets |
ab+ |
追加读写 | 打开文件 | 新建文件 | 文件末尾 |
byets |
文件偏移量标记当前操作文件的位置,在 Python 中使用 tell
方法获取偏移量,seek
方法修改偏移量,在进行读写操作时,偏移量会自动增加。
对于文本文件,偏移量的单位是 字符
对于二进制文件(使用 b
模式打开),偏移量的单位是 字节
在文件的中间进行写入时,不是插入,而是覆盖:
每次都手动关闭文件略显繁琐,并且过程中如果发生了错误,可能导致忘记关闭。在 Python 中可以使用 with
解决这个问题:
with open('/path/to/file', 'r') as f:
pass
在 with
的代码块运行结束时,自动调用 f.__exit__()
来关闭文件,无论是正常结束,还是异常中断。
任何有
__enter__
和__exit__
方法的对象均可以使用with
语句。
在进入with
时自动调用对象的__enter__
方法,在离开with
时自动调用对象的__exit__
方法。
示例: