Python遍历目录
在编程过程中,经常会遇到需要遍历目录并处理其中的文件的需求。Python提供了一些方便的库和方法,使得遍历目录变得非常简单和高效。本文将介绍如何使用Python来遍历目录,并提供一些示例代码帮助读者更好地理解。
os 模块
Python的os模块提供了一些操作系统相关的功能,包括文件和目录操作。我们可以使用os.walk()方法来遍历目录下的所有文件和子目录,示例代码如下:
import os
for root, dirs, files in os.walk("test_dir"):
for file in files:
print(os.path.join(root, file))
运行结果将输出所有文件的绝对路径:
test_dir/file1.txt
test_dir/file2.txt
test_dir/sub_dir/file3.txt
在上面的示例代码中,os.walk()方法会递归遍历指定目录下的所有文件和子目录,并返回一个三元组(root, dirs, files),其中root为当前目录路径,dirs为当前路径下的子目录列表,files为当前路径下的文件列表。
pathlib 模块
Python3.4引入了pathlib模块,提供了更加面向对象的路径操作方法。我们可以使用Path.glob()方法来遍历目录下的所有文件和子目录,示例代码如下:
from pathlib import Path
p = Path("test_dir")
for f in p.glob("**/*"):
print(f)
运行结果将输出同样的文件路径:
test_dir/file1.txt
test_dir/file2.txt
test_dir/sub_dir/file3.txt
pathlib模块提供了更加直观和易读的代码编写方式,让路径操作更加方便和简洁。
fnmatch 模块
fnmatch模块提供了Unix风格的文件名匹配功能,我们可以使用fnmatch.fnmatch()方法来遍历目录并匹配指定文件名,示例代码如下:
import fnmatch
import os
for root, dirs, files in os.walk("test_dir"):
for file in files:
if fnmatch.fnmatch(file, "*.txt"):
print(os.path.join(root, file))
运行结果将只输出所有后缀为.txt的文件路径:
test_dir/file1.txt
test_dir/file2.txt
test_dir/sub_dir/file3.txt
fnmatch模块可以让我们更加灵活地筛选出符合条件的文件,使得文件遍历的过程更加可控。
总结
本文介绍了如何使用Python来遍历目录,并提供了os、pathlib和fnmatch模块的示例代码。读者可以根据自己的实际需求选择合适的方法来遍历目录,对提高工作效率和代码可维护性都有很大帮助。