文件模式
你可以使用 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