使用 Python 在目錄中列出特定型別的全部檔案


Python 的靈活特性和強大的庫使得操作檔案和目錄變得輕而易舉。Python 可以幫助您生成、更新和從檔案和資料夾中檢索資料。其中一個典型的需求是列出特定型別的所有檔案的目錄列表。本教程將引導您完成該過程,並使用實際示例演示 Python 在檔案系統操作方面的熟練程度。

Python 的 Os 和 Glob 庫簡介

標準 Python 庫包含許多可以管理檔案系統操作的模組。os 和 glob 模組是兩個眾所周知的模組示例。

  • os 模組 - Python 的 os 模組提供了與作業系統通訊的工具。它提供了新增、刪除和瀏覽目錄的操作,這對於檔案和目錄操作非常有用。

  • glob 模組 另一個有效的工具是 glob 模組,它使用 Unix shell 的規則來查詢與特定模式匹配的所有路徑名。鑑於它支援 * 和 ? 等萬用字元,因此非常適合我們的目標。

讓我們深入研究示例以更好地瞭解它們的用法。

示例 1:使用 Os 和 Fnmatch 模組

在這裡,我們將使用 Python 中的 os 和 fnmatch 模組列出目錄中存在的每個 .txt 檔案。

import os
import fnmatch

def list_files(directory, filetype):
   for file in os.listdir(directory):
      if fnmatch.fnmatch(file, filetype):
         print(file)

list_files('/home/user/documents', '*.txt')

此程式碼段中的 os.listdir() 函式顯示指定目錄中每個檔案和目錄的列表。然後,fnmatch 模組的 fnmatch() 函式確定每個檔案是否與指定的檔案型別模式匹配。如果檔案型別匹配,則列印檔名。

示例 2:使用 Glob 模組

現在讓我們使用 glob 模組列出目錄中存在的每個 .jpg 影像檔案。

import glob

def list_files(directory, filetype):
   for file in glob.glob(f"{directory}/{filetype}"):
      print(file)

list_files('/home/user/images', '*.jpg')

此示例中使用 glob.glob() 函式返回與路徑名模式匹配的路徑列表。目錄路徑和檔案型別在 f 字串中組合。然後,該函式打印出目錄中的 .jpg 檔案。

示例 3:使用 Glob 模組進行遞迴搜尋

使用 glob 模組,我們還可以對目錄及其子目錄中特定型別的檔案進行遞迴搜尋。例如,讓我們查詢所有 .png 圖片檔案。

import glob

def list_files(directory, filetype):
   for file in glob.glob(f"{directory}/**/{filetype}", recursive=True):
      print(file)

list_files('/home/user/images', '*.png')

此程式碼段的路徑字串中的 ** 指示 glob 在所有資料夾和子目錄中執行遞迴搜尋。遞迴功能透過 recursive=True 選項啟用。

示例 4:列出所有 Python 檔案

可以按以下方式使用 os 和 fnmatch 模組來查詢並列出特定目錄中的每個 Python .py 檔案 -

import os
import fnmatch

def list_files(directory, filetype):
   for file in os.listdir(directory):
      if fnmatch.fnmatch(file, filetype):
         print(file)

list_files('/home/user/my_python_projects', '*.py')

這將列出目錄中所有 .py 檔案的名稱。

示例 5:使用 Os.walk 進行遞迴搜尋

此外,我們可以使用 os.walk() 執行遞迴搜尋。此函式自上而下或自下而上遍歷目錄樹以建立檔名。

import os
import fnmatch

def list_files(directory, filetype):
   for dirpath, dirnames, files in os.walk(directory):
      for file in files:
         if fnmatch.fnmatch(file, filetype):
            print(os.path.join(dirpath, file))

list_files('/home/user/projects', '*.txt')

此指令碼使用 os.walk() 函式遍歷目錄樹。使用 fnmatch.fnmatch() 函式將每個檔案與所需的檔案型別進行比較,並使用 os.path.join() 獲取匹配檔案的完整路徑。

結論

許多編碼場景都需要在目錄中列出特定型別的全部檔案,而 Python 的廣泛模組集(例如 os 和 glob)提供了一種簡單的方法來執行此操作。本文提供的眾多實際示例使如何使用這些模組在目錄中列出檔案以及對目錄和任何子目錄執行遞迴搜尋變得一目瞭然。

在您的程式設計工具箱中具備操作檔案和目錄的能力至關重要。這些能力有助於組織專案檔案、瀏覽日誌檔案,甚至自動化系統功能。繼續研究這些例程,以發現 Python 強大的檔案系統管理功能的更多內容。

更新於:2023-07-18

984 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告