Python程式顯示目錄中的所有子目錄


在 Python 中,我們可以使用pathlib模組、os模組和glob模組來顯示目錄中的所有資料夾。os 模組包含各種函式,例如os.scandiros.walkos.listdirglob()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() 方法,用於獲取指定目錄中的子目錄。

更新於: 2023年4月17日

240 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告