Python中os.walk()是一个遍历目录树的方法,用于遍历文件目录中的所有文件及文件夹,并返回一个由三元组构成的生成器。三元组的内容包括当前遍历到的文件夹路径、当前文件夹下的子文件夹列表以及当前文件夹下的文件列表。
具体使用方式如下:
基本用法
import os
# 遍历指定目录下的所有文件及文件夹,返回一个生成器
for root, dirs, files in os.walk('/path/to/dir'):
# 打印当前目录下的所有文件夹
print(dirs)
# 打印当前目录下的所有文件
print(files)
这段代码可以遍历指定目录下所有文件和文件夹,并打印出当前文件夹下的所有文件夹名和文件名。
遍历过滤特定文件类型
如果需要遍历指定类型的文件,可以使用os.path.splitext()函数来进行判断。
import os
# 遍历指定目录下的所有文件及文件夹,返回一个生成器
for root, dirs, files in os.walk('/path/to/dir'):
# 遍历目录下的所有文件
for file in files:
# 如果文件类型为txt,则进行处理
if os.path.splitext(file)[1] == '.txt':
print(os.path.join(root, file))
这段代码可以遍历指定目录下所有txt文件,并打印出文件路径。
遍历递归子目录
os.walk()默认为横向遍历。如果需要遍历子目录,则需要设置参数topdown为False。
import os
# 遍历指定目录下的所有文件及文件夹,返回一个生成器
for root, dirs, files in os.walk('/path/to/dir', topdown=False):
# 遍历目录下的所有文件夹
for dir in dirs:
print(os.path.join(root, dir))
# 遍历目录下的所有文件
for file in files:
print(os.path.join(root, file))
这段代码可以遍历指定目录下的所有文件和文件夹,包括子目录中的。
批量修改文件名
os.walk()还可以用于批量修改文件名。
import os
# 遍历指定目录下的所有文件及文件夹,返回一个生成器
for root, dirs, files in os.walk('/path/to/dir'):
# 遍历目录下的所有文件
for file in files:
# 如果文件类型为txt,则进行处理
if os.path.splitext(file)[1] == '.txt':
# 修改文件名
os.rename(os.path.join(root, file), os.path.join(root, 'new_' + file))
这段代码可以遍历指定目录下所有txt文件,并在文件名前加上前缀new_。
总结:
os.walk()是Python自带的一个遍历目录树的方法,可以实现遍历目录下的所有文件和文件夹,并作出相应操作。在实际开发中,os.walk()的作用非常广泛,可以用于批量重命名、复制、移动等操作。