2026-10-22 21:44:56
在Python中,可以使用os模块或pathlib模块来遍历目录下的所有文件夹和文件路径。以下是两种方法的详细说明和示例代码:
方法一:使用os.walk()os.walk()是一个生成器函数,可以递归遍历目录树,返回当前目录路径、子目录列表和文件列表。
import osdef list_files(startpath): for root, dirs, files in os.walk(startpath): for dir in dirs: print(os.path.join(root, dir)) for file in files: print(os.path.join(root, file))# 示例:遍历F盘下的所有文件夹和文件list_files("F:")说明:
pathlib模块提供了面向对象的文件系统路径操作,Path.rglob()方法可以递归遍历目录树,匹配所有文件和目录。
from pathlib import Pathdef list_files(startpath): path = Path(startpath) for item in path.rglob("*"): print(item)# 示例:遍历F盘下的所有文件夹和文件list_files("F:")说明:
编码问题:
如果路径中包含非ASCII字符(如中文),在Windows系统下可能需要处理编码问题。例如,在Eclipse的PyDev控制台中,可能需要使用.decode('gbk').encode('utf-8')来避免乱码。
在Windows的cmd中运行Python脚本时,通常不需要处理编码问题,因为cmd使用GB2312编码。
系统保留目录:
某些系统保留目录(如$RECYCLE.BIN、System Volume Information)可能会导致遍历出错。可以通过条件判断跳过这些目录。
性能考虑:
对于非常大的目录树,os.walk()和pathlib.Path.rglob()的性能可能有所不同。可以根据实际需求选择合适的方法。
说明:
通过以上方法,可以灵活地遍历目录下的所有文件夹和文件路径。