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()方法
如果将递归参数设置为true,则iglob()函数用于递归打印文件名。传递给iglob()函数的参数中包含此设定。
语法
glob.iglob(‘your_directory_path’,recursive=true/false)
glob模块的iglob()函数接受包含目录路径和一个布尔值(用于递归参数)作为输入,并返回递归地遍历所有子目录中的所有文件。
示例
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()方法来获取指定目录中的子目录。