【问题标题】:Python: Keep savefig from overwriting old plotsPython:防止 savefig 覆盖旧图
【发布时间】:2013-12-26 16:50:11
【问题描述】:

我只是使用

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

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

由于我不会一次性完成,this 对我没有帮助。我找到了this,了解如何防止 Python 覆盖文件,但这是针对os 的。有没有办法用savefig 做到这一点?

最后我希望Python检查filename.png是否存在,如果存在,则将新图保存为filename1.pngfilename2.png等。

【问题讨论】:

    标签: python matplotlib operating-system


    【解决方案1】:

    您必须自己提供一些独特的名称: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))
    

    【讨论】:

      猜你喜欢
      • 2018-08-08
      • 2021-05-29
      • 1970-01-01
      • 2019-02-13
      • 2014-04-03
      • 2018-06-27
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多