Python中Pillow库Image.save()使用变量作为路径参数无法保存文件如何解决?
Python批量处理TIFF图片保存路径问题解决方案
你的代码存在以下问题,修正后即可正常将处理后的图片存入指定目录:
- 对文件列表执行了不必要的
files[1:]切片操作,会跳过源目录下的第一个文件,且没有过滤仅处理.tiff格式的文件,容易触发PIL读取非图片文件的异常 - 没有拆分原文件的名称和后缀,直接拼接
.jpeg会生成xxx.tiff.jpeg这类不符合要求的文件名 - 硬编码字符串拼接路径容易因为文件名含特殊字符、路径首尾斜杠异常导致路径错误,需统一使用
os.path.join处理所有路径拼接
修正后可运行代码
#!/usr/bin/env python3 from PIL import Image import os # 统一配置路径,避免重复硬编码出错 src_dir = "/home/dani/images" dst_dir = os.path.join(src_dir, "opt/icons") # 目标目录不存在则创建 if not os.path.exists(dst_dir): os.makedirs(dst_dir) # 遍历源目录下所有文件 for filename in os.listdir(src_dir): src_path = os.path.join(src_dir, filename) # 跳过目录、仅处理tiff格式文件 if os.path.isdir(src_path): continue # 不区分大小写处理.tiff/.tif后缀 if not filename.lower().endswith(('.tiff', '.tif')): continue # 拆分原文件名和后缀,保留原文件名 base_name = os.path.splitext(filename)[0] # 拼接目标保存路径 save_path = os.path.join(dst_dir, f"{base_name}.jpeg") # 处理图片并保存 im = Image.open(src_path) im.convert('RGB').rotate(-90).resize((128,128)).save(save_path)
验证方法
如果运行后仍有异常,可以在save代码前添加一行print(save_path),打印最终生成的保存路径,确认路径是否符合预期,快速定位路径拼接问题。
内容的提问来源于stack exchange,提问作者Adani7
相关产品推荐
相关产品推荐

