Python:让savefig不要覆盖旧图

ali*_*ice 5 python operating-system matplotlib

我只是用

plt.savefig(filename+'.png', format='png')
Run Code Online (Sandbox Code Playgroud)

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

由于我不是一次性做到这一点,对我没有帮助.我发现这是关于如何防止Python覆盖文件,但这是为了os.有没有办法做到这一点savefig

最后,我想Python来检查是否filename.png存在且仅当,保存新的数字作为filename1.png,filename2.png等等.

小智 6

你必须自己提供一些独特的名字: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
Run Code Online (Sandbox Code Playgroud)

注意:如果扩展名已经存在.png,则无需将格式设置为png显式.

编辑

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

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