EHB*_*EHB 6 python permissions matplotlib figure windows-10
看来这一定是我机器上的权限问题。在Windows 10上进行系统更新后,当我运行时:
import matplotlib.pyplot as plt
#make figure
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
#save
plt.savefig("./figs/my_plot.jpg")
Run Code Online (Sandbox Code Playgroud)
它将在第一次运行代码时创建图形。如果我更改了代码(例如更改标签),然后重新运行,则Jupyter Notebook中显示的图将更新,但保存在我的计算机上的文件不会更新!在推出系统更新后,这是今天的新问题,因此这似乎是罪魁祸首。除了每次进行更改时都创建新文件名之外,我是否有解决此问题的见解?
小智 9
乔恩(Jon)在2015年10月2日的回答对我来说很成功。 https://superuser.com/questions/147525/what-is-the-date-column-in-windows-7-explorer-it-matches-no-date-column-from/335901#335901
基本上,Windows在文件夹中检测到很多图片,并“优化”所述文件夹中的图片。这意味着显示的列是“日期”,而不是“修改日期”,因为对于文档“已优化”的文件夹而言。日期采用创建日期和修改日期中的较早日期。当matplotlib .savefig覆盖文件时,由于创建日期不会更改,因此“日期”列永远不会更改。
为了解决此问题,我为文档定制了文件夹。为此,选择文件夹并打开属性窗口。导航到“定制”选项卡,然后在“为此文件夹优化”下选择文档。
小智 8
只需添加“plt.close()”
plt.savefig("./figs/my_plot.jpg")
plt.close()
Run Code Online (Sandbox Code Playgroud)
这可能是简单而愚蠢的,但我将执行以下操作:
import os
import matplotlib.pyplot as plt
#make figure
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
#save
strFile = "./figs/my_plot.jpg"
if os.path.isfile(strFile):
os.remove(strFile) # Opt.: os.system("rm "+strFile)
plt.savefig(strFile)
Run Code Online (Sandbox Code Playgroud)
直接使用“ rm”作为系统命令行可能非常困难,但是您可以使用与该选项类似的任何其他选项。
但是说实话,matplotlib不会覆盖文件很奇怪。
编辑
我看到您使用的是Windows,因此您可以使用“ del”作为删除命令行,而不是使用“ rm”作为unix。
| 归档时间: |
|
| 查看次数: |
5532 次 |
| 最近记录: |