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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.