如何在Python中關閉已開啟的檔案?
Python 內建函式 `open()` 用於開啟檔案並返回檔案物件。檔案物件中的方法和屬性可用於收集有關已開啟檔案的詳細資訊,也可用於修改該檔案。
開啟檔案
此函式需要兩個引數。首先是檔名和完整路徑,其次是訪問模式。此函式返回一個檔案物件。
語法
以下是開啟檔案的語法
open(filename, mode)
這裡,**檔名**及其路徑由字串引數指定,**模式**引數用於確定檔案將用於讀寫。
**注意**:如果檔案和Python指令碼不在同一目錄中,則必須指定檔案的完整路徑。如果不提供模式,則預設訪問模式為讀取模式。
示例
以下是使用 **r+ 模式** 開啟檔案的示例:
# Opening a file file = open("file.txt", "r+") print ("Name of the file: ", file.name) print ("Opening mode : ", file.mode)
輸出
以下是上述程式碼的輸出:
Name of the file: file.txt Opening mode : r+
開啟檔案的各種模式
- **ab** - 以二進位制格式開啟檔案,其他方面與 `a` 模式相同。
- **ab+** - 以二進位制格式開啟檔案,其他方面與 `a+` 模式相同。
- **a+** - 允許讀取和追加到檔案。如果檔案已存在,則檔案指標位於檔案末尾;否則,將建立一個新檔案進行讀寫。
- **a** - 以追加模式開啟檔案。如果檔案存在,則指標位於檔案末尾;否則,將建立一個新檔案進行寫入。
- **wb** - 與 `w` 模式類似,但以二進位制格式開啟檔案。
- **wb+** - 與 `w+` 模式類似,但以二進位制格式開啟檔案。
- **w+** - 以讀寫模式開啟檔案;其餘與 `w` 模式類似。
- **w** - 以寫入模式開啟檔案。這將替換現有檔案,如果現有檔案不存在則建立一個新檔案。
- **rb** - 以二進位制模式開啟檔案,其他方面與 `r` 模式相同。
- **rb+** - 與 `r+` 模式類似,只是以二進位制模式開啟檔案。
- **r+** - 以讀寫模式開啟檔案。指標位於檔案的開頭。
- **r** - 以只讀模式開啟檔案。指標位於檔案的開頭。這也是預設模式。
- **x** - 用於獨佔建立檔案。如果檔案已存在,則操作失敗。
- **t** - 以文字模式開啟(預設)。
- **b** - 以二進位制模式開啟。
- **+** - 以更新模式開啟檔案(讀寫)。
關閉檔案
可以直接使用檔案物件呼叫 `close()` 函式,因為它不需要任何引數。可以多次呼叫它,但是如果對已關閉的檔案執行任何操作,則會引發 "ValueError" 異常。
示例
以下是關閉檔案的示例:
# Opening a file file = open("file.txt", "r+") # closing the file file.close()
**注意**:務必記住在完成任務後始終顯式關閉每個開啟的檔案,並且不需要保持開啟狀態,因為程式一次只能開啟一定數量的檔案。如果超過此限制,則無法安全恢復,因此軟體可能會崩潰。
`close()` 不是完全安全的。如果我們在嘗試對檔案執行某些操作時丟擲異常,則該函式會在不關閉檔案的情況下終止。最好使用 `try...finally` 塊。
示例
以下示例說明,即使生成異常並中斷程式執行,也可以保證檔案將被正確關閉:
try: file = open("file.txt", "r+") finally: file.close()
**注意**:在Python中處理檔案操作最安全的方法是使用 "with" 語句,因為它確保在內部塊退出時關閉檔案。
示例
在下面的示例中,不必顯式呼叫 `close()` 方法。該過程是內部的:
with open("file.txt", "r+") as file: # perform some file operations
廣告