请参考下方的攻略:
Python实现递归遍历文件夹并删除文件
在Python中实现递归遍历文件夹,可以使用os
模块提供的os.walk()
函数。该函数可遍历指定目录下的所有子目录,使用者可以在回调函数中进行相应的操作,例如删除文件。
os.walk()
函数
os.walk()
函数用于通过递归遍历文件夹获取目标目录下的所有子目录、文件名及文件夹名。其语法如下:
for root, dirs, files in os.walk(top, topdown=True, onerror=None, followlinks=False):
#root:当前遍历的根目录
#dirs:当前根目录下的子目录,列表形式
#files:当前根目录下的文件,列表形式
#top:要遍历的目标目录
#topdown:定义遍历的顺序,为True时表示首先遍历top下的目录,后遍历其子目录;为False时相反
#onerror:定义遍历过程中发生错误的处理方式
#followlinks:定义是否要遍历符号链接指向的路径
实现递归遍历并删除文件的步骤
- 使用
os.walk()
函数获取目标目录下的所有子目录、文件名及文件夹名。 - 对于每个子目录及文件,判断是否是目标需要删除的文件,如果是,则删除。
- 对于每个子目录,在当前子目录中递归调用以上两个操作,直到遍历完所有文件夹及文件。
以下是一个示例:
import os
def remove_files_by_suffix(root, suffix):
for dir_path, dir_names, file_names in os.walk(root):
for file_name in file_names:
if file_name.endswith('.' + suffix):
file_path = os.path.join(dir_path, file_name)
os.remove(file_path)
print("文件已删除:", file_path)
for dir_name in dir_names:
remove_files_by_suffix(os.path.join(dir_path, dir_name), suffix)
以上示例中,remove_files_by_suffix
函数接收两个参数,分别为根目录root
和要删除文件的后缀名suffix
,并按照以上步骤实现递归遍历及删除文件的操作。
remove_files_by_suffix("D:/test", "txt")
以上代码将会删除目标目录"D:/test"及其子目录中所有后缀名为"txt"的文件,执行结果将在控制台输出被删除的文件路径。
另一个示例
以下是一个更复杂的示例,它将递归删除指定后缀名的文件,在删除之前提示用户确认是否删除,保证操作的安全性。
import os
def remove_files_by_suffix(root, suffix):
for dir_path, dir_names, file_names in os.walk(root):
for file_name in file_names:
if file_name.endswith('.' + suffix):
file_path = os.path.join(dir_path, file_name)
#确认用户是否需要删除该文件
answer = input("确认删除文件%s吗?(y/n):" % file_path)
if answer.lower() == 'y':
os.remove(file_path)
print("文件已删除:", file_path)
else:
print("文件未删除:", file_path)
for dir_name in dir_names:
remove_files_by_suffix(os.path.join(dir_path, dir_name), suffix)
以上示例中,用户可通过输入y或n确认是否删除目标文件,防止误删重要文件。
总结
以上就是基于Python实现递归遍历文件夹并删除文件的攻略。使用os.walk()
函数可以便捷地遍历目标目录下的所有文件和文件夹,通过递归及条件判断实现文件的删除操作,可根据需求进行相应的改动。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现递归遍历文件夹并删除文件 - Python技术站