我只是使用
plt.savefig(filename+'.png', format='png')
保存我的情节。但是当我创建一个新版本(使用不同的颜色代码等)时,我希望保留旧版filename.png
,而不必总是提出新的文件名。
由于我不是一次性完成,this对我没有帮助。我找到this关于如何防止Python覆盖文件,但那是os
。有没有办法用savefig
?
最后,我希望Python检查filename.png
是否存在,只有这样,将新图保存为filename1.png
,filename2.png
等。
答案 0 :(得分: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
注意:如果扩展名已为.png
,则无需明确将格式设置为png
。
修改强>
我意识到上面的内容过于冗长,只是因为我想避免两次进行字符串格式化。以下可能更符合逻辑:
import os
i = 0
while os.path.exists('{}{:d}.png'.format(filename, i)):
i += 1
plt.savefig('{}{:d}.png'.format(filename, i))