📅  最后修改于: 2023-12-03 15:38:07.797000             🧑  作者: Mango
当我们需要对一个文件夹中的所有文件进行处理时,我们需要一个方法来遍历整个文件夹并对每一个文件进行操作。Python提供了一些内置函数和模块来完成这个任务。
os.walk()函数可以递归地遍历一个目录及其子目录,返回每一个目录下的所有文件和子目录。下面是一个使用os.walk()函数的例子:
import os
# 遍历目录
def traverse_dir(dir_path):
for root, dirs, files in os.walk(dir_path):
for file in files:
file_path = os.path.join(root, file)
print(file_path)
# 测试
if __name__ == '__main__':
traverse_dir('/path/to/directory')
上述代码中,os.walk()函数返回一个三元组,包含当前目录、当前目录下的子目录以及当前目录下的所有文件,通过循环遍历返回的三元组中的文件即可实现遍历一个目录及其子目录的功能。
glob模块可以用来查找符合特定规则的文件路径名,例如查找指定目录下的所有pdf文件,使用"*.pdf"作为通配符即可。下面是使用glob模块的例子:
import glob
# 遍历目录
def traverse_dir(dir_path):
files = glob.glob(dir_path + "/**/*.pdf", recursive=True)
for file in files:
print(file)
# 测试
if __name__ == '__main__':
traverse_dir('/path/to/directory')
上述代码使用glob.glob()函数查找指定目录下的所有pdf文件,并返回一个包含所有文件路径的列表。通过循环遍历该列表即可实现遍历一个目录及其子目录的功能。
pathlib模块是Python 3.4及以上版本中新增的模块,提供了一种更加面向对象的方式来操作文件和目录,可以替代os模块中的一些函数。下面是使用pathlib模块的例子:
import pathlib
# 遍历目录
def traverse_dir(dir_path):
path = pathlib.Path(dir_path)
for file in path.rglob("*"):
if file.is_file():
print(file)
# 测试
if __name__ == '__main__':
traverse_dir('/path/to/directory')
上述代码使用pathlib.Path()函数创建一个Path对象,接着调用Path.rglob()方法遍历指定目录及其子目录下的所有文件,并使用Path.is_file()方法判断每个文件是否为文件。通过循环遍历即可实现遍历一个目录及其子目录的功能。
以上是三个常用的Python遍历文件目录的方法,根据需求选择适合自己的方法即可。