Python PIL 将图像保存在目录中,如果名称相同则不覆盖

标签 python image save python-imaging-library

我正在尝试制作图像的备份副本,因为它会经常调整大小。我要求提供图像所在的路径(Tkinter),然后我向路径和图像添加“-original”并将其保存在我获取它的同一目录中。

问题是每次我使用这个函数时它都会覆盖原来的函数,因为没有循环使程序检查是否已经存在带有“-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)

目前我正在研究一个可以工作的操作系统解决方案,但我觉得它必须很简单。我红色了 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)

关于Python PIL 将图像保存在目录中,如果名称相同则不覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32718770/

相关文章:

python - 如何在 python 类上创建带参数的装饰函数?

python - 使用python在内存中的zip文件中创建符号链接(symbolic link)

image - 将带有 Exif 信息的图像从 Windows Phone 发送到 Java 服务器

javascript - Firefox 插件向网站公开 chrome 功能

python - 如何将 2d numpy 数组保存并显示为 RGB 伪彩色图像?

python - 如何重新分区 pyspark 数据框?

python - 当单独列表的内容发生变化时更新列表框的显示内容?

python - 使用 Python 从 URL 下载图像给出损坏的结果

Android GridView 3 x 6 图像裁剪

python - 如何保存 GridSearchCV 对象?