在 Python 中列出目錄和子目錄中的所有檔案
-
在 Python 中使用
os.walk()
來列出目錄和子目錄中的所有檔案 -
在 Python 中使用
listdir()
列出目錄和子目錄中的所有檔案 -
在 Python 中使用
glob
列出目錄和子目錄中的所有檔案
Python 提供了許多方法來訪問目錄和子目錄中的檔案列表。本指南將介紹 os.walk()
、listdir()
和 glob
。
在 Python 中使用 os.walk()
來列出目錄和子目錄中的所有檔案
Python 中的 os
模組提供了一種與作業系統互動的方法。它有許多處理檔案系統的內建函式。
我們可以使用這個模組獲取、建立、刪除和更改目錄。walk()
是一種遞迴方法,它通過自上而下或自下而上的方式在目錄樹中生成檔名。
在下面的程式碼中,我們顯示了目錄和 MyFolder
的子目錄中的檔案。在我們的例子中,這個資料夾位於 Python 環境的主目錄中。
示例程式碼:
import os
root = "MyFolder"
for path, subdirs, files in os.walk(root):
for name in files:
print(os.path.join(path, name))
輸出:
MyFolder\text_file1.txt
MyFolder\text_file2.txt
MyFolder\SubFolder1\text_file3.txt
MyFolder\SubFolder1\text_file4.txt
在 Python 中使用 listdir()
列出目錄和子目錄中的所有檔案
在下面的程式碼中,我們遍歷目錄樹並訪問它的檔案和子檔案,而不使用 walk
方法。我們已將根資料夾 MyFolder
指定為起點。
然後我們使用 listdir()
訪問該資料夾的目錄和子目錄並將它們儲存在專案中。我們將專案名稱與之前的路徑連線起來,並使用 isdir()
方法檢查它是否是目錄。
如果是這樣,我們將進一步搜尋該目錄並應用相同的過程。如果檔名是檔名,我們已將檔名附加到上一個路徑並顯示它們。
示例程式碼:
import os
root = "MyFolder"
files = []
walk = [root]
while walk:
folder = walk.pop(0) + "/"
items = os.listdir(folder) # items = folders + files
for i in items:
i = folder + i
(walk if os.path.isdir(i) else files).append(i)
print(files)
輸出:
['MyFolder/text_file1.txt', 'MyFolder/text_file2.txt', 'MyFolder/SubFolder1/text_file3.txt', 'MyFolder/SubFolder1/text_file4.txt']
在 Python 中使用 glob
列出目錄和子目錄中的所有檔案
glob
是 Python 中的一個內建模組,代表 global
。此模組返回名稱和副檔名與特定模式匹配的所有檔案路徑。
這裡我們使用了*.*
,它表示任何具有任何副檔名的檔名。我們使用 glob.glob()
在目錄或子目錄中遞迴查詢檔案。
如果 recursive 設定為 True
,則模式 **
將匹配任何檔案以及零個或多個資料夾和子目錄。
示例程式碼:
import glob
path = "MyFolder\**\*.*"
for file in glob.glob(path, recursive=True):
print(file)
輸出:
MyFolder\text_file1.txt
MyFolder\text_file2.txt
MyFolder\SubFolder1\text_file3.txt
MyFolder\SubFolder1\text_file4.txt
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn