加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 不能使用matplotlib的savefig()读写文件?

发布时间:2020-12-20 11:31:37 所属栏目:Python 来源:网络整理
导读:我试图将我的数字保存在临时文件中.我想以最Python的方式做到这一点.为此,我尝试使用tempfile,但我遇到了一些问题. savefig函数应该能够将文件名作为字符串或类似文件的对象,在我尝试的前两件事中我完全没有看到它. 这是我最初尝试过的: with tempfile.Temp
我试图将我的数字保存在临时文件中.我想以最Python的方式做到这一点.为此,我尝试使用tempfile,但我遇到了一些问题. savefig函数应该能够将文件名作为字符串或类似文件的对象,在我尝试的前两件事中我完全没有看到它.

这是我最初尝试过的:

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())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读