当我们需要遍历某个目录及其子目录下的所有文件和目录时,可以使用 Python 的 os.walk()
函数。这个函数返回一个生成器,该生成器递归地遍历一个目录及其子目录中的所有文件和目录。下面是一个详细的攻略来讲解如何使用 os.walk()
函数。
函数定义
以下是 os.walk()
函数的定义:
os.walk(top, topdown=True, onerror=None, followlinks=False)
该函数的参数如下:
top
:需要遍历的根目录路径。topdown
:遍历的顺序。默认值是True
,表示先列举目录,然后列举目录中的文件。如果设置为False
,则表示先遍历子目录中的文件,然后列举子目录。onerror
:函数接受一个参数,当os.walk()
遇到错误时它会被调用。默认值是None
,表示忽略错误。如果想要自定义处理错误,则可以把此参数传递给os.walk()
函数。followlinks
:表示是否要遍历链接(只适用于类 Unix 操作系统)。默认值是False
,即不跟踪符号链接。如果想要跟踪符号链接,则需要把该参数设置为True
。
os.walk()
函数返回以下三个元素的元组:
- 当前目录路径。
- 当前目录下的子目录名称列表。
- 当前目录下的文件名称列表。
在遍历根目录及其所有子目录的过程中,os.walk()
函数返回的元组可作为一个 .for
循环的控制变量。
示例1: 遍历目录及其所有空文件
下面的示例展示了如何使用 os.walk()
函数来遍历目录及其所有空文件。我们将定义一个名为 list_empty_files()
的函数。该函数输入一个目录名称,返回目录及其所有子目录中所有空文件的列表。
import os
def list_empty_files(dir):
# 存储所有空文件的列表
empty_files = []
# 遍历目录及其子目录下的所有文件和目录
for current_path, subdirectories, files in os.walk(dir):
# 循环处理每个文件
for file in files:
# 检查文件是否为空
file_path = os.path.join(current_path, file)
if os.stat(file_path).st_size == 0:
empty_files.append(file_path)
return empty_files
# 测试 list_empty_files 函数
empty_files = list_empty_files('.')
print(empty_files)
在上面的示例中,我们定义了 list_empty_files()
函数,该函数遍历目录及其子目录下的所有文件和目录,找到所有空文件,并将其存储到 empty_files
列表中。
示例2: 输出目录树
下面的示例展示了如何使用 os.walk()
函数来输出目录树。我们将定义一个名为 print_directory_tree()
的函数。该函数输入一个目录名称,输出该目录及其所有子目录的目录树。
import os
def print_directory_tree(dir, padding=0):
# 在每个输出的目录名称前填充 padding 个空格
padding_str = " " * padding
# 获取目录及其子目录中所有文件和目录的列表
files_and_directories = os.listdir(dir)
# 遍历所有文件和目录
for file_or_dir in files_and_directories:
# 获取文件或目录的完整路径
full_path = os.path.join(dir, file_or_dir)
# 输出文件或目录名称
print(padding_str + file_or_dir)
# 如果当前元素是一个目录, 递归调用本函数
if os.path.isdir(full_path):
print_directory_tree(full_path, padding + 4)
# 测试 print_directory_tree 函数
print_directory_tree('.')
在上面的示例中,我们定义了 print_directory_tree()
函数,该函数遍历目录及其子目录下的所有文件和目录,输出目录树。在遍历目录时,os.walk()
函数会自动生成增加或减少缩进的控制变量。为了获得更细致的控制,我们在 print_directory_tree()
函数中定义了一个 padding
参数,该参数用于设置每个目录名之前的空格数。
希望这个攻略对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 中 os.walk() 函数详解 - Python技术站