[英]Python PIL save Image in directory no override if the name is same
我正在尝试制作图像的备份副本,因为它会经常调整大小。 我要求输入图像的路径(Tkinter),然后在路径和图像上添加“原始”,并将其保存在从中获取图像的同一目录中。
问题是每次我使用此功能时,它都会覆盖原始功能,因为没有循环使程序检查是否已经存在带有“ -original”的文件。
那就是我如何保存备份:
pfad = askopenfilename()
im_backup = Image.open(pfad)
start_string = pfad[:pfad.index(".")]
ende_string = pfad[pfad.index("."):]
im_backup.save(start_string + "-original" + ende_string)
目前,我正在使用可以工作的os解决方案,但我觉得它必须很简单。 我修改了PIL.Image.save的文档,可以传递更多的参数来保存,但是我不知道必须使用哪个参数来防止覆盖。
我当前的解决方案(尚无法使用)正在使用os.listdir(directory)进行检查,是否已经有一个(start_string +“ -original” + ende_string)文件,并且只有在它为false时才保存在那里。
提前致谢!
考虑使用os.path.splitxext
代替切片和索引。 您也可以使用os.path.isfile
代替listdir
。
import os
pfad = askopenfilename()
name, ext = os.path.splitext(pfad)
backup_name = name + "-original" + ext
if not os.path.isfile(backup_name):
im_backup = Image.open(pfad)
im_backup.save(backup_name)
通过将某些内容传递给.save()
机器人可能可以做您想要的事情。
文档中可能使您认为有可能的事情是:
但是在源代码中有几行,
self.encoderinfo = params
self.encoderconfig = ()
其中所有选项都存储在与编码器相关的变量中,因此可能不是您想要的。
因此,您可能应该考虑执行@Kevin建议的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.