如何使用 Python 關閉所有開啟的檔案?


在 Python 中,檔案處理任務(如開啟、讀取、寫入和關閉檔案或操作檔案中的資料)很常見。雖然開啟檔案具有其重要性和實用性,但正確關閉檔案同樣重要,以便釋放系統資源並確保資料完整性。在本文中,我們將探討在 Python 中關閉多個開啟檔案的不同方法和技巧,使您能夠最佳化檔案處理操作並維護整潔的程式碼。

使用上下文管理器

在 Python 中,上下文管理器是有效管理需要正確初始化和清理的資源的工具。它們通常與“with 語句”一起使用。它們自動管理設定和拆卸操作,確保即使遇到異常也能及時釋放資源。它們確保檔案在超出作用域時自動關閉,即使發生異常也是如此。

在處理需要仔細管理的資源時,上下文管理器可以提供更簡潔、更易讀且無錯誤的程式碼。Python 提供了內建的上下文管理器,甚至允許我們建立自定義的上下文管理器。

示例

在此示例中,open() 函式與“with 語句”一起使用以開啟兩個檔案,即以讀取模式開啟 file1.txt 和以寫入模式開啟 file2.txt。這些檔案分別分配給兩個變數 file1 和 file2。我們可以在“with 塊”內對開啟的檔案執行任何所需的運算。退出“with 塊”後,上下文管理器會自動確保檔案已關閉,無論是否發生異常。

with open('file1.txt', 'r') as file1, open('file2.txt', 'w') as file2:
   # Perform operations on the opened files
   # ...

# The files are automatically closed outside the 'with' block

手動關閉多個檔案

如果您有一組要顯式關閉的檔案物件,您可以透過手動遍歷它們並分別關閉每個檔案來做到這一點。

示例

在下面給出的程式碼中,file1.txt 以讀取模式開啟,file2.txt 以寫入模式開啟。在對檔案執行所需的運算後,您可以使用 close() 方法顯式關閉它們。務必確保關閉所有開啟的檔案,以防止資源洩漏和可能的資料損壞。

file1 = open('file1.txt', 'r')
file2 = open('file2.txt', 'w')

# Perform operations on the opened files
# ...

# Close the files
file1.close()
file2.close()

使用檔案物件列表

如果有一系列需要關閉的檔案物件,您可以遍歷該列表並逐個關閉每個檔案。

示例

在此示例中,我們建立了一個包含三個開啟的檔案(即 file1.txt、file2.txt 和 file3.txt)的檔案列表。在對檔案執行必要的運算後,我們使用“for 迴圈”遍歷該列表,並使用 close() 方法關閉每個檔案。

files = [open('file1.txt', 'r'), open('file2.txt', 'w'), open('file3.txt', 
'a')]

# Perform operations on the opened files
# ...
# Close all the files
for file in files:
   file.close()

使用 try-finally 塊

您還可以使用 try-finally 塊來確保即使在檔案運算過程中發生異常,檔案也能正確關閉。

示例

在下面給出的程式碼中,file1.txt 以讀取模式開啟,file2.txt 以寫入模式開啟。在 try 塊中,您可以對檔案執行任何所需的運算。“finally 塊”無論是否發生異常都會執行。這確保了即使在檔案運算期間引發異常,檔案也能使用 close() 方法正確關閉。

file1 = open('file1.txt', 'r')
file2 = open('file2.txt', 'w')
try:
    # Perform operations on the opened files
    # ...
finally:
    # Close the files
    file1.close()
    file2.close()

使用 contextlib.closing 包裝器

contextlib.closing 函式可用作上下文管理器來包裝檔案物件並確保其正確關閉。

示例

在此示例中,contextlib.closing 函式用於包裝 file1.txt 和 file2.txt 的 open() 函式呼叫。這使我們能夠在“with 語句”中將結果檔案物件用作上下文管理器。與前面的示例類似,我們可以在“with 塊”中對檔案執行運算,並且上下文管理器會在退出該塊時確保檔案已正確關閉。

import contextlib
with contextlib.closing(open('file1.txt', 'r')) as file1, 
contextlib.closing(open('file2.txt', 'w')) as file2:
    # Perform operations on the opened files
    # ...

# The files are automatically closed outside the 'with' block

在 Python 中,正確關閉開啟的檔案非常重要,以便釋放系統資源並確保檔案處理的正確性和效率。在本文中,我們探討了關閉多個開啟檔案的各種方法。我們瞭解瞭如何將上下文管理器與“with 語句”一起使用,該語句會在檔案超出作用域時以程式設計方式處理檔案的關閉。我們還討論瞭如何使用 close() 方法手動關閉檔案,並展示瞭如何關閉一組檔案物件。我們還學習瞭如何使用“try-finally 塊”和 contextlib.closing 函式。

透過實施這些實踐和技巧,您可以有效地管理檔案處理操作,保持程式碼整潔並停止資源洩漏。建議始終關閉檔案,以培養高效的程式設計習慣並避免潛在的意外問題。

更新於:2023年7月17日

5K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.