文件模式
你可以使用 mode 参数指定的不同模式打开文件。这些包括:
-
'r'- 阅读模式。默认值。它只允许你读取文件,而不是修改它。使用此模式时,文件必须存在。 -
'w'- 写作模式。如果它不存在,它将创建一个新文件,否则将删除该文件并允许你写入该文件。 -
'a'- 追加模式。它会将数据写入文件末尾。它不会删除文件,并且该模式必须存在该文件。 -
'rb'- 二进制读取模式。这与r类似,不同之处在于以二进制模式强制读取。这也是默认选择。 -
'r+'- 同时读取模式和写入模式。这使你可以同时读取和写入文件,而无需使用r和w。 -
'rb+'- 二进制读写模式。与r+相同,但数据是二进制的 -
'wb'- 二进制写入模式。与w相同,但数据是二进制的。 -
'w+'- 写作和阅读模式。与r+完全相同,但如果文件不存在,则创建一个新文件。否则,文件将被覆盖。 -
'wb+'- 二进制模式下的写入和读取模式。与w+相同,但数据是二进制的。 -
'ab'- 以二进制模式附加。与a类似,不同之处在于数据是二进制的。 -
'a+'- 追加和阅读模式。与w+类似,因为如果文件不存在,它将创建一个新文件。否则,文件指针位于文件的末尾(如果存在)。 -
'ab+'- 二进制的附加和读取模式。与a+相同,只是数据是二进制的。with open(filename, 'r') as f: f.read() with open(filename, 'w') as f: f.write(filedata) with open(filename, 'a') as f: f.write('\n' + newdata)
| [R | R + | w ^ | W + | 一个 | A + | |
|---|---|---|---|---|---|---|
| 读 | ✔ | ✔ | ✘ | ✔ | ✘ | ✔ |
| 写 | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ |
| 创建文件 | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ |
| 删除文件 | ✘ | ✘ | ✔ | ✔ | ✘ | ✘ |
| 初始位置 | 开始 | 开始 | 开始 | 开始 | 结束 | 结束 |
Python 3 为 exclusive creation 添加了一个新模式,这样你就不会意外地截断或覆盖现有文件。
'x'- 开放独家创作,如果文件已经存在,将提升FileExistsError'xb'- 打开二进制独占创建写入模式。与x相同,但数据是二进制的。'x+'- 阅读和写作模式。与w+类似,因为如果文件不存在,它将创建一个新文件。否则,将提升FileExistsError。'xb+'- 写作和阅读模式。与x+完全相同,但数据是二进制的
| X | X + | |
|---|---|---|
| 读 | ✘ | ✔ |
| 写 | ✔ | ✔ |
| 创建文件 | ✔ | ✔ |
| 删除文件 | ✘ | ✘ |
| 初始位置 | 开始 | 开始 |
允许一个人以更加 pythonic 的方式编写文件打开代码:
Python 3.x >= 3.3
try:
with open("fname", "r") as fout:
# Work with your open file
except FileExistsError:
# Your error handling goes here
在 Python 2 中你会做类似的事情
Python 2.x >= 2.0
import os.path
if os.path.isfile(fname):
with open("fname", "w") as fout:
# Work with your open file
else:
# Your error handling goes here