【问题标题】:Pickle / Save Virtual File in Python to DiskPickle / 将 Python 中的虚拟文件保存到磁盘
【发布时间】:2021-11-10 13:02:29
【问题描述】:

我想在字典中腌制一个虚拟文件。

具体来说,我有一个 function G 和一个 save() 方法,它采用文件 obj 或字符串(文件名)将其内容保存到磁盘。

但我想先将它保存到一个虚拟文件中,然后将此虚拟文件与关联数据一起放入dict,然后将完整的字典保存(腌制)到磁盘。

如何保存到内存文件,将其包含在字典中并腌制?或者你会怎么做?

类似:

out = {
    'var1': var1,
    'var2': var2
    }

with tempfile.SpooledTemporaryFile() as file:

    G.save(file)
    out['G'] = file

非常感谢!

【问题讨论】:

  • 为什么要保存文件,而不是 G 类本身?
  • 因为 G 本身是不可腌制的。

标签: python pickle graph-tool virtual-file


【解决方案1】:

我认为您想做的事情应该可以通过以下方式实现:

out = {
    'var1': var1,
    'var2': var2
    }

with tempfile.SpooledTemporaryFile() as file:
    G.save(file)
    file.seek(0) # reset the file handle to the start
    out['G'] = file.read() # read the binary data into your dict

二进制流稍后可以转换回类似文件的 obj。使用io.BytesIO( out['G'] )。

【讨论】:

  • 太棒了,这似乎有效! .seek(0) 和 .read() 是缺少的部分。
猜你喜欢
  • 2019-10-30
  • 2018-04-04
  • 2016-07-22
  • 2013-12-19
  • 2010-09-23
  • 2010-11-08
  • 2011-02-14
  • 2021-11-03
  • 2018-01-13
相关资源
最近更新 更多