如何用Python PIL批量处理多级子文件夹中的图片裁剪?
批量处理子文件夹图片裁剪解决方案
可以通过os.walk()遍历主文件夹下的所有子目录及文件,修改后的代码如下:
from PIL import Image import os def crop_images(root_dir): # 遍历主文件夹下所有子目录和文件 for root, dirs, files in os.walk(root_dir): for file in files: # 筛选常见图片格式,可按需添加更多格式 if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')): fullpath = os.path.join(root, file) try: im = Image.open(fullpath) f, e = os.path.splitext(fullpath) # 执行你指定的裁剪操作 imCrop = im.crop((80, 270, 4000, 3000)) # 保存裁剪后的图片,保留原路径和文件名并添加Cropped后缀 imCrop.save(f + 'Cropped.jpg', "JPEG") except Exception as e: print(f"处理文件{fullpath}出错: {e}") if __name__ == "__main__": root_path = r"D:\test" crop_images(root_path)
关键修改说明:
- 用
os.walk(root_dir)替代原有的os.listdir(path):os.walk会自动递归遍历主文件夹下的所有子文件夹,返回当前目录路径、子文件夹列表、当前目录文件列表,无需手动嵌套循环处理子目录。 - 新增图片格式筛选:避免误处理非图片文件,确保只针对常见图片格式执行裁剪。
- 增加异常捕获:防止单个文件处理出错导致程序中断,同时打印错误信息方便排查问题。
- 优化代码结构:将裁剪逻辑封装为独立函数,入口处调用,代码更清晰易维护。
内容的提问来源于stack exchange,提问作者Kiran
相关产品推荐
相关产品推荐

