You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理JPG文件的多下划线检测移动逻辑编写及脚本优化求助

JPG文件分类逻辑实现与代码优化

现有代码存在的问题

  • 路径处理不规范:混用pathlib、os.path.join和字符串拼接反斜杠,容易触发转义错误,不同系统兼容性差
  • 循环逻辑冗余:遍历目录条目时每遇到一个文件就切换工作目录、全量扫描一次jpg文件,会重复执行操作,运行效率极低
  • 缺少错误目录初始化:移动文件到错误文件夹前没有提前创建目录,会触发路径不存在的报错
  • 需求逻辑缺失:当前下划线数量判断只作用于文件夹,完全没有对jpg文件的下划线数量做校验
  • 目录创建没有容错:如果同名分类目录已经存在,os.mkdir会直接报错

需求实现逻辑

你需要的「下划线超过1个的jpg移入错误文件夹」逻辑可以按以下步骤实现:

  1. 提前初始化工作目录、错误目录路径,提前创建错误目录避免移动时报错
  2. 统一用pathlib处理所有路径,避免字符串拼接的转义问题
  3. 单次遍历目标目录下所有jpg文件,先校验下划线数量:
    • 下划线数量>1:直接移动到错误目录
    • 下划线数量符合要求:执行原有的分类逻辑,替换空格后创建同名目录移入文件
  4. 所有目录创建都增加exist_ok=True参数,避免重复创建报错

优化后完整代码

from pathlib import Path
import shutil
import time

# 时间戳生成
timestr = time.strftime("%Y%m%d-%H%M%S")

# 路径配置(用原始字符串避免反斜杠转义,全程用Path对象处理)
base_folder = Path(r'D:\test\testing')
working_folder = base_folder / 'DitaTest1'
# 错误文件夹路径
error_folder = base_folder / f'DitaTest1 - dir-ERRORS_{timestr}'
# 提前创建错误文件夹
error_folder.mkdir(exist_ok=True, parents=True)

# 遍历工作目录下所有jpg文件(如果要包含子目录的jpg,把glob改成rglob即可)
for jpg_file in working_folder.glob('*.jpg'):
    # 只处理文件,跳过目录
    if not jpg_file.is_file():
        continue
    # 统计下划线数量
    underline_count = jpg_file.name.count('_')
    # 超过1个下划线的移入错误文件夹
    if underline_count > 1:
        shutil.move(str(jpg_file), str(error_folder / jpg_file.name))
        continue
    # 符合要求的文件执行原有分类逻辑
    # 生成分类目录名:替换空格,去掉.jpg后缀
    dir_name = jpg_file.stem.replace(' ', '_')
    target_dir = working_folder / dir_name
    target_dir.mkdir(exist_ok=True)
    # 移动文件到分类目录
    shutil.move(str(jpg_file), str(target_dir / jpg_file.name))

# 原有文件夹校验逻辑(需要保留的话可以继续使用)
for dir_entry in working_folder.iterdir():
    if dir_entry.is_dir() and dir_entry.name.count('_') != 1 and dir_entry != error_folder:
        shutil.move(str(dir_entry), str(error_folder / dir_entry.name))

额外优化建议

  • 如果需要处理嵌套子目录里的jpg文件,把working_folder.glob('*.jpg')改成working_folder.rglob('*.jpg')即可
  • 可以增加重复文件判断,移动前先判断目标路径是否存在同名文件,避免覆盖
  • 可以增加日志打印,记录每个文件的移动结果,方便后续排查问题

内容的提问来源于stack exchange,提问作者DEDev2021

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:12:01