这是我最初尝试过的:
with tempfile.Temporaryfile(suffix=".png") as tmpfile: fig.savefig(tmpfile,format="png") #NO ERROR print b64encode(tmpfile.read()) #nothing IN HERE
然后我尝试了什么:
with open("test.png","rwb") as tmpfile: fig.savefig(tmpfile,format="png") #"libpngerror",and a traceback to # "backends_agg.py": "RuntimeError: Error building image" print b64encode(tmpfile.read())
然后我尝试了什么:
with open("test.png","wb") as tmpfile: fig.savefig(tmpfile,format="png")with open("test.png"),"rb") as tmpfile: print b64encode(tmpfile.read())
这有效.但是现在使用模块tempfile的全部意义已经消失,因为我必须自己处理命名和删除tempfile,因为我必须打开它两次.有什么方法可以使用tempfile(没有奇怪的解决方法/黑客攻击)?
解决方法 该文件具有执行读取,写入的当前位置.最初文件位置在开头(除非您使用append move(a)打开文件或显式移动文件位置).如果您相应地写/读,文件位置会提前.如果你不倒回文件,如果从那里读取,你将得到空字符串.使用file.seek
,您可以移动文件位置.
with tempfile.Temporaryfile(suffix=".png") as tmpfile: fig.savefig(tmpfile,format="png") # file position is at the end of the file. tmpfile.seek(0) # Rewind the file. (0: the beginning of the file) print b64encode(tmpfile.read())@H_403_46@ 总结
以上是内存溢出为你收集整理的python – 不能使用matplotlib的savefig()读写文件?全部内容,希望文章能够帮你解决python – 不能使用matplotlib的savefig()读写文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)