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() 方法,用于获取指定目录中的子目录。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP