檔案模式

你可以使用 mode 引數指定的不同模式開啟檔案。這些包括:

  • 'r' - 閱讀模式。預設值。它只允許你讀取檔案,而不是修改它。使用此模式時,檔案必須存在。

  • 'w' - 寫作模式。如果它不存在,它將建立一個新檔案,否則將刪除該檔案並允許你寫入該檔案。

  • 'a' - 追加模式。它會將資料寫入檔案末尾。它不會刪除檔案,並且該模式必須存在該檔案。

  • 'rb' - 二進位制讀取模式。這與 r 類似,不同之處在於以二進位制模式強制讀取。這也是預設選擇。

  • 'r+' - 同時讀取模式和寫入模式。這使你可以同時讀取和寫入檔案,而無需使用 rw

  • '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