Python程式顯示目錄中的所有子目錄
在 Python 中,我們可以使用pathlib模組、os模組和glob模組來顯示目錄中的所有資料夾。os 模組包含各種函式,例如os.scandir、os.walk、os.listdir或glob()和iglob()方法等,用於列出目錄中的所有目錄。目錄是檔案系統中用於儲存各種檔案或更多資料夾的資料夾。
方法 1:使用 Pathlib 模組
我們可以使用 Path.iterdir() 函式獲取目錄中內容的路徑物件。然後,我們可以迭代路徑物件並使用path.is_dir()方法過濾掉目錄。
語法
path(‘your_dir_path’).iterdir()
上面的path()函式獲取目錄的路徑,並使用iterdir()函式迭代每個檔案和目錄。
示例
在下面的示例中,我們從 Python 中的Path模組匯入pathlib。然後,我們可以使用 path.iterdir() 函式獲取目錄內容的路徑物件,然後迭代該物件以過濾掉目錄中內容的路徑。
from pathlib import Path rootdir = 'path/to/dir' for path in Path(rootdir).iterdir(): if path.is_dir(): print(path)
輸出
C:\Users\Muralidhar\Downloads\DesignCode - CSS Handbook C:\Users\Muralidhar\Downloads\Documents C:\Users\Muralidhar\Downloads\LakshyaPoddar_FD_Round3_Code Base C:\Users\Muralidhar\Downloads\locales C:\Users\Muralidhar\Downloads\Music
方法 2:使用 OS 模組
語法
os.listdir(‘your_directory_path’)
os 模組的 listdir() 方法獲取目錄的路徑並返回該特定目錄路徑中的所有子目錄。
示例
使用 os.listdir() 方法:os 模組中的 listdir() 函式預設只返回根目錄中的所有子目錄。如果我們想要列出任何指定目錄的子目錄,則需要將目錄的路徑傳遞給 os.listdir() 函式。
# import OS module import os # Get the list of all files and directories path = "your_directory_path" dir_list = os.listdir(path) print("The path of the directory '", path, "' :") # prints all files print(dir_list)
輸出
'SOP_VISHAL.docx', 'SR.jpeg', 'src', 'src.rar', 'staff.svg', 'sublime_text_build_4126_x64_setup.exe', 'submission_2.zip', 'swiftshader'
使用 os.scandir() 方法
scandir() 方法返回目錄路徑中的子目錄以及檔案資訊。要僅過濾出子目錄,我們可以使用 is_dir() 方法,該方法檢查路徑是檔案還是目錄。Scandir() 方法比 listdir() 方法更快。
語法
os.scandir(‘your_directory_path’)
os 模組的 scandir() 函式以目錄的路徑作為輸入,並返回特定目錄中的所有子目錄和檔案。
示例
import os rootdir = 'path/to/dir' for it in os.scandir(rootdir): if it.is_dir(): print(it.path)
輸出
C:\Users\Muralidhar\Downloads\Programs C:\Users\Muralidhar\Downloads\resources C:\Users\Muralidhar\Downloads\src C:\Users\Muralidhar\Downloads\swiftshader C:\Users\Muralidhar\Downloads\Telegram Desktop C:\Users\Muralidhar\Downloads\TransferNow-20230404wNPPor3p C:\Users\Muralidhar\Downloads\Video
使用 os.walk() 方法
walk() 方法迭代目錄中的所有檔案,並返回目錄結構中所有檔案的列表。預設情況下,walk 函式透過自上而下的方式迭代根目錄中的檔案並返回這些檔案。我們可以將特定路徑和特定的掃描方法(自上而下或自下而上)傳遞給 walk() 函式。
語法
os.walk(‘your_directory_path’)
os 模組的 walk() 函式以目錄的路徑作為輸入,並返回特定目錄中的檔案列表。
示例
# import OS module import os # This is my path path = "your_specific_path" # to store files in a list list = [] # dirs=directories for (root, dirs, file) in os.walk(path): for f in file: if '.txt' in f: print(f)
輸出
license.txt authors.txt config.txt help.txt logo.txt options.txt topics.txt
方法 3:使用 Glob 模組
使用 glob() 方法
glob() 方法使用模式匹配方法使檔案和目錄的列表更有效。我們可以使用萬用字元(如 *、.txt 等),這允許搜尋與萬用字元模式匹配的檔案路徑。
語法
glob.glob(‘your_directory_path’+ pattern)
glob 模組的 glob() 函式以目錄的路徑和模式作為輸入,並返回特定目錄中與檔名匹配模式的所有檔案。
示例
import glob # This is my path path = "your_specific_path" # Using '*' pattern print('\nNamed with wildcard *:') for files in glob.glob(path + '*'): print(files) # Using '?' pattern print('\nNamed with wildcard ?:') for files in glob.glob(path + '?.txt'): print(files) # Using [0-9] pattern print('\nNamed with wildcard ranges:') for files in glob.glob(path + '/*[0-9].*'): print(files)
輸出
Named with wildcard *: C:\Users\Muralidhar\Downloads Named with wildcard ?: Named with wildcard ranges: C:\Users\Muralidhar\Downloads\1643005747_rohankumarsingh074c43032beb4cee8cb1329312cf92351643005746.pdf C:\Users\Muralidhar\Downloads\1674125121289.jpg C:\Users\Muralidhar\Downloads\807.pdf
使用 iglob() 方法
如果傳遞給 iglob() 函式的引數中將遞迴引數設定為 true,則 iglob() 函式用於遞迴列印檔名。
語法
glob.iglob(‘your_directory_path’,recursive=true/false)
glob 模組的 iglob() 函式以目錄的路徑和遞迴引數的布林值(true/false)作為輸入,並返回每個子目錄中的所有檔案(遞迴)。
示例
import glob # This is my path path = "your_specific_path" # It returns an iterator which will # be printed simultaneously. print("\nUsing glob.iglob()") # Prints all types of txt files present in a Path for file in glob.iglob(path, recursive=True): print(file)
輸出
Using glob.iglob() C:\Users\Muralidhar\Downloads
結論
在本文中,我們瞭解瞭如何使用 Python 中的 os、glob 和 pathlib 模組列出目錄中存在的所有檔案和子目錄。pathlib 模組包含 path.iterdir() 函式,os 模組包含 os.listdir()、os.walk() 和 os.listdir() 方法,用於獲取指定目錄中的子目錄。