📅  最后修改于: 2023-12-03 15:33:20.871000             🧑  作者: Mango
在 Python 中,我们经常需要对某个目录下的所有文件进行遍历。使用 os.walk 可以很方便地实现这个功能。
os.walk 函数可以生成一个三元组,分别是当前遍历的路径、当前路径下的文件夹(列表),当前路径下的文件(列表)。
函数原型:
os.walk(top, topdown=True, onerror=None, followlinks=False) -> Iterator[Tuple[str, List[str], List[str]]]
参数说明:
top
: 起始遍历路径topdown
: 是否是自上而下遍历,默认为 Trueonerror
: 遍历过程中出错时的回调函数followlinks
: 是否遍历符号链接指向的路径返回值说明:
(dirpath, dirnames, filenames)
dirpath
: 当前遍历的路径dirnames
: 当前路径下的文件夹列表filenames
: 当前路径下的文件列表下面展示一个使用 os.walk 遍历文件夹并打印出文件路径的代码:
import os
def traverse_folder(root_folder):
for dirpath, dirnames, filenames in os.walk(root_folder):
for filename in filenames:
print(os.path.join(dirpath, filename))
if __name__ == '__main__':
traverse_folder('/path/to/root/folder')
代码说明:
traverse_folder
root_folder
目录下的所有文件和文件夹filenames
列表,打印出每个文件的路径我们可以把文件遍历的逻辑单独提取出来,让 traverse_folder 函数只负责调用文件遍历函数。
import os
def traverse_files(root_folder, func):
"""遍历文件夹下的所有文件"""
for dirpath, dirnames, filenames in os.walk(root_folder):
for filename in filenames:
filepath = os.path.join(dirpath, filename)
func(filepath)
def process_file(filepath):
"""处理文件"""
print(filepath)
if __name__ == '__main__':
traverse_files('/path/to/root/folder', process_file)
代码说明:
traverse_files
和文件处理函数 process_file
traverse_files
函数遍历 root_folder
目录下的所有文件,并调用 process_file
函数进行处理process_file
函数中处理文件(这里只是简单地打印文件路径)这样,我们可以使用 process_file
函数来实现不同的文件处理逻辑,从而达到代码复用和模块化的目的。
os.walk 是 Python 中非常实用的文件遍历函数,使用方便,灵活性高,可以方便地实现文件的遍历、统计、处理等功能。