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

Python图片处理:如何将处理后图片保存到对应同名目标子文件夹

问题原因

  • 逻辑嵌套错误:图片保存逻辑被放在了遍历所有test_path子文件夹的循环内部,每处理1张原始图片,都会往所有目标子文件夹里各存1份处理后的图片,最终每个文件夹都存入了全量处理图片。
  • 文件夹对应关系缺失:没有从当前遍历的原始图片路径中提取所属的子文件夹名,无法匹配到对应同名的目标保存文件夹。
  • 路径拼接不规范:手动拼接双斜杠容易出现兼容问题,且目标文件夹创建逻辑被注释,运行时如果目标路径不存在会直接报错。
  • 遍历对象错误:需要处理的是test_path下的图片,原代码错误遍历了train_path路径。

修正后代码

import os
from PIL import Image

path_school = "/content/drive/MyDrive"
test_path = os.path.join(path_school, "test")
processedex_path = os.path.join(path_school, "test_ex")

# 提前创建所有目标子文件夹,避免后续保存时报错
for folder_name in os.listdir(test_path):
    target_folder = os.path.join(processedex_path, folder_name)
    os.makedirs(target_folder, exist_ok=True)

# 遍历test_path下的所有图片
for root, dirs, files in os.walk(test_path):
    # 提取当前图片所属的子文件夹名,直接匹配同名目标文件夹
    current_folder = os.path.basename(root)
    for filename in files:
        ext = os.path.splitext(filename)[-1].lower()
        if ext == '.jpg':
            img_path = os.path.join(root, filename)
            img = Image.open(img_path).convert('L')
            img = img.resize((256,256))
            # 拼接对应同名文件夹的保存路径
            save_path = os.path.join(processedex_path, current_folder, f"pre_{filename}")
            img.save(save_path)

代码说明

  • 提前批量创建test_ex下的所有同名子文件夹,exist_ok=True参数避免文件夹已存在时报错。
  • 遍历test_path时直接提取当前路径对应的子文件夹名,不需要额外遍历所有目标文件夹,避免重复存储。
  • 所有路径拼接使用Python内置的os.path.join方法,适配不同系统的路径格式规则,避免斜杠数量错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:27:01