os.path.join未正确拼接目录与文件名,转换后的图片未存入目标文件夹
问题原因
路径拼接失效是os.path.join的特性导致的:如果传入os.path.join的参数中,靠后的参数是绝对路径,那么该参数之前的所有路径参数都会被直接丢弃。
你代码里的file变量存储的是完整绝对路径/home/sergey/Документы/008.jpeg,执行file[:-len(srcSfx)]操作后得到的是/home/sergey/Документы/008,依然是绝对路径,所以和save_dir拼接时save_dir直接被忽略,最终生成的路径还是原文件所在目录。
修复方案
你需要先从完整路径中提取纯文件名,再做后缀替换和路径拼接,修改后的代码参考如下:
import os from PIL import Image array = ['/home/sergey/Документы/008.jpeg'] srcSfx = '.jpeg' destSfx = 'png' save_dir = os.path.join(os.path.dirname(array[0]), "Converted_files") os.makedirs(save_dir, exist_ok=True) # 加exist_ok=True避免目录已存在时报错 for file in array: if file.endswith(srcSfx): im = Image.open(file).convert("RGB") print(save_dir) # 先提取纯文件名,再替换后缀 filename = os.path.basename(file) new_filename = filename[:-len(srcSfx)] + '.' + destSfx p = os.path.join(save_dir, new_filename) print(p) im.save(p, destSfx)
内容的提问来源于stack exchange,提问作者Ivan Cheshkov
相关产品推荐
相关产品推荐

