这似乎必须是我的计算机上的权限问题。在Windows 10上进行系统更新后,当我运行时:
var contentTaskList = new List<Task<Task<string>>>();
for (var i = 0; i < 10; i++)
contentTaskList.Add(httpClient.GetAsync(uri)
.ContinueWith(rt => rt.Result.Content.ReadAsStringAsync()));
while (contentTaskList.Any())
{
var contentTaskTask = await Task.WhenAny(contentTaskList);
contentTaskList.Remove(contentTaskTask);
context.WriteLine(contentTaskTask.Result.Result);
}
它将在第一次运行代码时创建数字。如果我对代码进行了更改(例如更改标签)然后重新运行,则更新Jupyter Notebook中显示的图,但保存在我的机器上的文件不是!在系统更新被推出之后,这是今天的新问题,所以这似乎是一个可能的罪魁祸首。除了在每次更改时创建新文件名之外,我还能解决这个问题吗?
答案 0 :(得分:6)
乔恩(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覆盖文件时,由于创建日期不会更改,因此“日期”列永远不会更改。
为解决此问题,我为文档定制了文件夹。为此,选择文件夹并打开属性窗口。导航到“定制”选项卡,然后在“为此文件夹优化”下选择文档。
答案 1 :(得分:3)
这可能很简单也很愚蠢,但我会做以下几点:
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)
直接使用“rm”作为系统命令行可能会非常困难,但您可以使用与该命令行类似的任何其他选项。
但说实话,matplotlib不会覆盖文件很奇怪。
修改强>
我看到你正在使用windows,所以你可以使用“del”作为删除命令行而不是“rm”用于unix。
答案 2 :(得分:1)
只需添加“ plt.close()”
plt.savefig("./figs/my_plot.jpg")
plt.close()