使用Python列出目錄中特定類型的所有文件

WBOY
發布: 2023-08-28 23:25:12
轉載
1006 人瀏覽過

使用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 模組,我們也可以在目錄及其子目錄中遞歸搜尋特定類型的檔案。例如,我們來尋找 all.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 強大的檔案系統管理功能。

以上是使用Python列出目錄中特定類型的所有文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板