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