📅  最后修改于: 2023-12-03 15:34:00.200000             🧑  作者: Mango
在 Python 编程中,有时需要查找指定路径下的所有子目录和文件。本文介绍几种方法,帮助你完成这个任务。
os.walk()
是 Python 的标准函数之一,它可以生成一个目录树下的所有文件名。你可以通过递归地遍历这个树,找到指定目录下的所有文件和文件夹。以下是一个示例代码:
import os
root_dir = '/path/to/directory'
for root, dirs, files in os.walk(root_dir):
for name in files:
print(os.path.join(root, name)) # 打印出所有文件
for name in dirs:
print(os.path.join(root, name)) # 打印出所有目录
os.walk()
函数返回一个三元组 (dirpath, dirnames, filenames)
,其中:
dirpath
是一个字符串,表示正在处理的目录的路径dirnames
是一个包含目录名字的字符串列表filenames
是一个包含非目录文件名的字符串列表在 Python 3.4 中引入的 pathlib 模块,提供了一种更优雅的方式来管理文件路径。使用 Path 可以轻松地表示和操作文件路径、目录和文件。
Path.glob() 方法可以返回指定目录下所有符合特定模式的文件路径。下面是一个使用 pathlib 的示例代码:
from pathlib import Path
root_dir = Path('/path/to/directory')
for path in root_dir.glob('**/*'):
print(path)
Path.glob()
方法返回一个生成器,遍历指定目录下的所有子目录和文件,用了 '**' 模式来匹配任意数目的子目录。如果只想匹配一级子目录,可以使用 '*' 模式。
如果你没用使用 pathlib 模块,Python 标准库中的 os
模块也提供了一些基本的方法来操作文件路径和目录。os.listdir()
方法返回指定目录下的所有文件和子目录的名称列表。
你可以通过遍历这个列表来递归地查找目录树。下面是一个示例代码:
import os
root_dir = '/path/to/directory'
def list_files_dirs(root):
for item in os.listdir(root):
full_path = os.path.join(root, item)
if os.path.isdir(full_path):
print(full_path) # 打印出所有目录
list_files_dirs(full_path)
else:
print(full_path) # 打印出所有文件
list_files_dirs(root_dir)
其中,os.path.isdir()
方法用来判断一个路径是不是目录。
Python 提供了多种方式来查找指定目录下的所有文件和目录。os.walk()
、pathlib.Path.glob()
和 os.listdir()
都是非常常用的方法。不同的方法有不同的优缺点,可以根据具体的需求来选择合适的方法。