如何使用Python shutil模糊匹配文件名并批量移动指定文件?
模糊匹配批量移动文件实现方案
你可以在原有代码基础上,新增目录遍历、规则匹配的逻辑实现需求,无需改动原有shutil.move的核心调用逻辑。
核心调整点
- 补充导入
os模块,用于目录遍历和兼容不同系统的路径拼接 - 用字典绑定「匹配字符组合」和「对应目标路径」,后续新增匹配规则仅需修改字典,无需改动主逻辑
- 遍历源目录下的所有文件,逐个匹配文件名是否包含规则中的字符组合,匹配成功直接移动
修改后的完整代码
import os import shutil src = "C:/Users/Startklar/Desktop/Ausgangsordner" dst = "C:/Users/Startklar/Desktop/Empfangsordner/Sven" dst2 = "C:/Users/Startklar/Desktop/Empfangsordner/Gerald" # 匹配规则:key为需要模糊匹配的字符组合,value为对应移动的目标路径 match_rules = { "408710": dst, "187105": dst2 } # 遍历源目录下的所有条目 for filename in os.listdir(src): # 拼接文件完整路径,跳过子文件夹(仅处理普通文件) full_file_path = os.path.join(src, filename) if not os.path.isfile(full_file_path): continue # 匹配规则并执行移动 for match_str, target_dir in match_rules.items(): if match_str in filename: shutil.move(src=full_file_path, dst=target_dir) # 匹配到一条规则即终止,避免重复移动 break
可选调整说明
- 如果需要忽略大小写匹配,可将判断条件修改为
if match_str.lower() in filename.lower(): - 如果需要递归遍历源目录下所有子文件夹的文件,可将
os.listdir替换为os.walk实现递归遍历 - 若担心目标路径已有同名文件被覆盖,可在移动前增加同名文件判断逻辑,或先备份再执行移动
内容的提问来源于stack exchange,提问作者Bebbi
相关产品推荐
相关产品推荐

