檔案模式
你可以使用 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