求扩展Python文件移动代码:未满足条件时移至ERROR文件夹
扩展Python文件移动脚本:按文件名条件分流文件
问题说明
现有代码仅能将源目录中文件名含"S"的文件移动到目标目录,需要扩展为:文件名含"S"的移至IN文件夹,不符合条件的移至ERROR文件夹。
完整实现代码
import os import glob import shutil source = '/Users/XY/Desktop/OUT' destination = '/Users/XY/Desktop/IN' error_dir = '/Users/XY/Desktop/ERROR' # 确保目标目录和错误目录存在,不存在则自动创建 os.makedirs(destination, exist_ok=True) os.makedirs(error_dir, exist_ok=True) # 递归获取源目录下所有文件(过滤掉子目录) all_files = [f for f in glob.glob(os.path.join(source, '**/*'), recursive=True) if os.path.isfile(f)] print("待处理文件总数:", len(all_files)) for file_path in all_files: file_name = os.path.basename(file_path) # 判断文件名是否包含"S",分流到对应目录 if 'S' in file_name: dst_path = os.path.join(destination, file_name) else: dst_path = os.path.join(error_dir, file_name) shutil.move(file_path, dst_path) print(f"Moved {file_path} -> {dst_path}")
关键改动说明
- 遍历所有文件:使用
glob.glob的**/*递归匹配源目录下所有文件,同时通过os.path.isfile过滤掉子目录,只处理文件 - 自动创建目录:用
os.makedirs(..., exist_ok=True)确保IN和ERROR目录存在,避免因目录不存在报错 - 条件判断分流:对每个文件名做是否含"S"的判断,分别指向不同的目标路径
- 日志跟踪:保留移动日志,方便查看每个文件的处理结果
内容的提问来源于stack exchange,提问作者Dominik
相关产品推荐
相关产品推荐

