python3 os.walk
一、概述
在 Python 中,os.walk
是一个非常实用的模块,用于遍历目录中的所有文件和子目录。它提供了一种简单而灵活的方式来迭代整个文件夹树,并且可以对文件做一些操作,比如复制、删除、重命名等。本文将详细介绍 os.walk
方法的使用方法、参数以及示例代码。
二、os.walk 方法的使用
要使用 os.walk
方法,我们首先需要导入 os
模块,然后调用 os.walk
方法。该方法的基本语法如下所示:
import os
for root, dirs, files in os.walk(path):
# 在此进行操作
path
是我们要遍历的目录的路径。该方法将返回三个值,分别是当前目录路径、该目录下的子目录列表和该目录下的文件列表。在 for
循环中可以对这些值进行操作。
三、os.walk 方法的参数
os.walk
方法可以接收三个参数:
1. top
:需要遍历的顶层目录的路径。我们可以通过该参数指定需要遍历的目录,默认为当前目录。
2. topdown
:是否按照自顶到底的顺序遍历目录。如果设置为 True,则先遍历顶层目录,然后遍历子目录;如果设置为 False,则先遍历子目录,再遍历顶层目录。默认为 True。
3. onerror
:可选参数,在遍历目录时发生错误时的处理函数。
四、遍历目录树的示例代码
下面是 os.walk
方法的一些常见用例,可以帮助我们更好地理解它的使用。
示例一:遍历目录下所有文件和子目录
import os
def walk_directory(path):
for root, dirs, files in os.walk(path):
print(f"当前目录:{root}")
print(f"子目录列表:{dirs}")
print(f"文件列表:{files}")
# 遍历当前目录
walk_directory(".")
运行结果:
当前目录:.
子目录列表:['subdir1', 'subdir2']
文件列表:['file1.txt', 'file2.txt']
当前目录:./subdir1
子目录列表:[]
文件列表:['subfile1.txt', 'subfile2.txt']
当前目录:./subdir2
子目录列表:['subsubdir']
文件列表:['subfile3.txt', 'subfile4.txt']
当前目录:./subdir2/subsubdir
子目录列表:[]
文件列表:['subsubfile1.txt', 'subsubfile2.txt']
这个示例演示了如何遍历当前目录下的所有文件和子目录。对于每个目录,我们都可以获取到当前目录的路径、子目录列表和文件列表。
示例二:遍历指定路径下所有文件,并输出文件路径
import os
def walk_files(path):
for root, dirs, files in os.walk(path):
for file in files:
file_path = os.path.join(root, file)
print(file_path)
# 遍历指定路径下的所有文件
walk_files("path/to/directory")
运行结果:
path/to/directory/file1.txt
path/to/directory/file2.txt
path/to/directory/subdir1/subfile1.txt
path/to/directory/subdir1/subfile2.txt
path/to/directory/subdir2/subfile3.txt
path/to/directory/subdir2/subfile4.txt
path/to/directory/subdir2/subsubdir/subsubfile1.txt
path/to/directory/subdir2/subsubdir/subsubfile2.txt
这个示例演示了如何遍历指定路径下的所有文件,并输出每个文件的绝对路径。
示例三:遍历目录树并删除指定文件类型的文件
import os
def delete_files(path, file_ext):
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(file_ext):
file_path = os.path.join(root, file)
os.remove(file_path)
# 删除指定路径下所有的 .txt 文件
delete_files("path/to/directory", ".txt")
这个示例演示了如何遍历目录树并删除指定类型的文件。在示例中,我们删除了指定路径下所有的 .txt 文件。
示例四:遍历目录树并重命名文件
import os
def rename_files(path, old_name, new_name):
for root, dirs, files in os.walk(path):
for file in files:
if file == old_name:
file_path = os.path.join(root, file)
new_file_path = os.path.join(root, new_name)
os.rename(file_path, new_file_path)
# 将指定路径下的文件名为 "file1.txt" 的文件改为 "new_file.txt"
rename_files("path/to/directory", "file1.txt", "new_file.txt")
这个示例演示了如何遍历目录树并重命名文件。在示例中,我们将指定路径下文件名为 “file1.txt” 的文件改名为 “new_file.txt”。
五、总结
本文详细介绍了 os.walk
方法的使用方法和参数,并给出了一些常见的示例代码。通过使用 os.walk
方法,我们可以方便地遍历目录树,对文件进行各种操作。