使用 Python 檢查檔案是否存在的最佳方法|詳解 os、pathlib、glob 的使用差異

1. 為什麼要在 Python 中確認檔案是否存在

導言

為了提高程式的穩定性,確認檔案是否存在是不可或缺的步驟。例如,在進行資料讀取或寫入時,如果目標檔案不存在,將會發生錯誤,導致程式中斷。在 Python 中,我們可以使用多種方法來確認檔案是否存在,但根據實際情境選擇最合適的方法是非常重要的。

本文將介紹使用 os 模組、pathlib 模組與 glob 模組進行檔案確認的方法,並說明各種方式的優點與適用情境。

2. 基本方法:os 模組

如何使用 os.path.exists()

os.path.exists() 用來確認指定的路徑是否存在檔案或資料夾。如果存在,則回傳 True;否則回傳 False

import os

if os.path.exists("example.txt"):
    print("檔案存在")
else:
    print("檔案不存在")

這段程式碼會檢查 example.txt 是否存在,並根據結果輸出對應訊息。os.path.exists() 是一個通用方法,可同時檢查檔案與資料夾的存在與否。

os.path.isfile() 和 os.path.isdir() 的區別使用

os.path.exists() 不會區分是檔案還是資料夾,但透過 os.path.isfile()os.path.isdir(),可以判斷目標是檔案還是資料夾。

if os.path.isfile("example.txt"):
    print("這是一個檔案")
elif os.path.isdir("example.txt"):
    print("這是一個資料夾")
else:
    print("不存在")

如上所示,在確認目標是否存在後,再進一步判斷是檔案還是資料夾,可以讓後續操作更加精確與彈性。

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. 進階應用:pathlib 模組

使用 Path.exists() 方法

pathlib 模組中,可以使用 Path.exists() 方法來確認檔案或資料夾是否存在。和 os.path.exists() 一樣,會回傳 TrueFalse,但程式碼更簡潔可讀。

from pathlib import Path

file_path = Path("example.txt")

if file_path.exists():
    print("檔案存在")
else:
    print("檔案不存在")

這種寫法會將檔案路徑作為 Path 物件處理,使程式碼更具物件導向風格,後續維護與擴充更方便。

Path.is_file() 與 Path.is_dir()

pathlib 也提供 is_file()is_dir() 方法,可輕鬆判斷目標是檔案還是資料夾。

if file_path.is_file():
    print("這是一個檔案")
elif file_path.is_dir():
    print("這是一個資料夾")

透過使用 pathlib,不僅能確認檔案是否存在,還能快速判斷其類型(檔案或資料夾),讓檔案處理更有效率。

實際應用情境

pathlib 在需要處理多個資料夾或檔案的專案中特別有用。它可以簡化複雜的路徑操作,並且具備跨平台特性,能夠在不同作業系統中使用相同的程式碼執行,是跨平台開發的理想選擇。

4. 使用 glob 模組在 Python 中確認檔案是否存在

使用 glob 進行樣式比對

glob 模組可根據檔案名稱或路徑的模式進行搜尋,非常適合一次找出符合特定條件的檔案。在處理大量檔案的情況下,特別有效。

import glob

files = glob.glob('*.txt')

if files:
    print("有文字檔案存在")
else:
    print("沒有文字檔案")

這段程式碼會列出目前目錄下所有副檔名為 .txt 的檔案,並確認其是否存在。透過這種模式比對方式,可以快速找出符合特定格式的檔案,例如用來管理備份檔案等用途。

實際應用情境

glob 非常適合用在需要操作大量檔案或資料夾,或是想依據特定名稱或副檔名處理檔案的情境。例如定期檢查與管理 log 檔案或暫存檔案等工作,就很適合使用 glob

年収訴求

5. 使用例外處理進行安全的檔案操作

為了避免在檔案不存在時發生錯誤,善用例外處理(Exception Handling)也非常重要。透過 try-except 的語法,可以防止程式因錯誤而中止,並向使用者顯示適當的錯誤訊息。

try:
    with open("example.txt") as f:
        print(f.read())
except FileNotFoundError:
    print("檔案不存在")

這段程式會在找不到檔案時捕捉 FileNotFoundError,避免程式當機,並輸出錯誤提示。這樣不僅提升使用者體驗,也有助於程式的穩定運作。

6. 總結

在 Python 中確認檔案是否存在的方法有很多種,包括 os 模組、pathlib 模組與 glob 模組等。根據不同的使用情境,各種方法各有優勢,靈活選擇使用非常重要。

  • 簡單確認檔案是否存在時,os.path.exists() 是首選。
  • 當需要處理複雜路徑或進行跨平台開發時,建議使用 pathlib
  • 若要依照特定模式搜尋檔案,glob 模組效果最佳。

了解並正確運用這些方法,可以讓你在使用 Python 進行檔案處理時更有效率且更安全。下一步,建議你繼續學習檔案的讀寫、刪除與複製等操作,進一步提升你的開發能力。