如何修改Python代码实现遍历子文件夹删除指定前缀文件
解决遍历所有子文件夹删除指定前缀文件的问题
问题分析
你之前的代码失效原因很明确:
- 结合
os.walk的版本里,始终用固定路径mypath/NAME*匹配文件,没有利用os.walk返回的当前目录root,所以只处理了主文件夹,完全没遍历子目录。 - 参考的代码中
glob未开启递归模式,只能匹配主文件夹内的文件,自然无法触及子目录内容。
方法一:用os.walk遍历所有目录
os.walk会逐层遍历目标路径下的所有子目录,我们可以在每个目录里检查文件名前缀,匹配成功就删除:
import os # 替换成你的主文件夹路径 target_root = "mypath" # 替换成你要匹配的文件前缀 target_prefix = "NAME" for root, _, files in os.walk(target_root): for filename in files: if filename.startswith(target_prefix): full_path = os.path.join(root, filename) os.remove(full_path)
方法二:用glob的递归模式
Python 3.5及以上版本的glob支持recursive=True参数,配合**通配符可以直接匹配所有子目录下的文件:
import glob import os target_root = "mypath" target_prefix = "NAME" # ** 表示匹配所有层级的子目录 for file_path in glob.glob(os.path.join(target_root, "**", f"{target_prefix}*"), recursive=True): # 额外判断是文件,避免误删同名目录 if os.path.isfile(file_path): os.remove(file_path)
安全提示
建议先把os.remove(file_path)替换成print(file_path),确认输出的文件路径都是你要删除的目标后,再执行删除操作,避免误删重要文件。
内容的提问来源于stack exchange,提问作者Juan Madrigal
相关产品推荐
相关产品推荐

