Python:防止savefig覆盖旧的绘图

2024-05-16 10:01:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是用

plt.savefig(filename+'.png', format='png')

来保存我的情节。但是当我创建一个新的filename.png(使用不同的颜色代码等)时,我想保留我的旧版本filename.png,而不必总是提出一个新的文件名。

因为我不是一次跑,所以this对我没有帮助。我找到了this关于如何防止Python覆盖文件的内容,但这是os的内容。有没有办法用savefig来实现这一点?

最后,我希望Python检查filename.png是否存在,并且只有存在时,才将新图形保存为filename1.pngfilename2.png


Tags: format图形内容pngos文件名pltfilename
1条回答
网友
1楼 · 发布于 2024-05-16 10:01:46

您必须自己提供一些独特的名称:matplotlib不会为您这样做。matplotlib也不会检查当前文件名是否存在。 我将沿着以下几行写一个循环:

(未经测试的代码)

import os
i = 0
while True:
    i += 1
    newname = '{}{:d}.png'.format(filename, i)
    if os.path.exists(newname):
        continue
    plt.savefig(newname)
    break

注意:如果扩展名已经是.png,则不需要显式地将格式设置为png

编辑

我意识到上面的内容太冗长了,只是因为我想避免两次格式化字符串。以下可能更符合逻辑:

import os
i = 0
while os.path.exists('{}{:d}.png'.format(filename, i)):
    i += 1
plt.savefig('{}{:d}.png'.format(filename, i))

相关问题 更多 >