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()函数。
#导入OS模块
import os
#获取所有文件和目录的列表
path =“your_directory_path”
dir_list = os.listdir(path)
print("The path of the directory '", path, "' :")
#打印所有文件
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桌面
C:\ Users \ Muralidhar \ Downloads \ TransferNow-20230404wNPPor3p
C:\ Users \ Muralidhar \ Downloads \ Video
使用os.walk()方法
walk()方法遍历目录中的所有文件并返回目录结构中的所有文件列表。默认情况下,walk函数通过从上向下迭代返回根目录中的文件。我们可以将特定路径和特定的扫描方法(自上而下或自下而上)传递给walk()函数。
语法
os.walk('your_directory_path')
os模块的walk()函数以目录的路径为输入,并返回特定目录中的文件列表。
示例
# 引入OS模块
import os
# 这是我的路径
path = "your_specific_path"
# 将文件存储在列表中
list = []
# dirs = 目录
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
# 这是我的路径
path = "your_specific_path"
# 使用“*”模式
print('\n使用通配符*命名:')
for files in glob.glob(path + '*'):
print(files)
# 使用“?”模式
print('\n以问号命名:')
for files in glob.glob(path + '?.txt'):
print(files)
# 使用[0-9]模式
print('\n带通配符范围命名:')
for files in glob.glob(path + '/*[0-9].*'):
print(files)
输出
使用通配符*命名:
C:\Users\Muralidhar\Downloads
以问号命名:
带通配符范围命名:
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
# 这是我的路径
path = "your_specific_path"
# 它返回一个同时打印的迭代器。
print("\n使用glob.iglob()")
# 打印Path中存在的所有类型的txt文件
for file in glob.iglob(path, recursive=True):
print(file)
输出
使用glob.iglob()
C:\Users\Muralidhar\Downloads
结论
在Python中,我们了解了如何使用os、glob和pathlib模块列出目录中的所有文件和子目录。pathlib模块包含path.iterdir()函数,os模块包含os.listdir()、os.walk()和os.listdir()方法来获取指定目录中的子目录。