我是python中的新手,我想知道是否有解决此问题的方法:
我知道这可能听起来很奇怪,但我想将pickle.dump数据保存到变量中.我开始认为,我可以绕过它,通过制作一个假类而不是写入文件,写入一个变量:
class PickleDatatoVar(object):
def __init__(self):
self.data = None
def write(self, data):
self.data = data
def get(self):
return self.data
Run Code Online (Sandbox Code Playgroud)
然后:
pick = PickleDatatoVar()
pickle.dump(Int, pick)
var = pick.get()
Run Code Online (Sandbox Code Playgroud)
没有任何内容显示为错误,但输出只是一个'.'
那么有没有一种解决方案而不是将其保存在保存为变量的文件中?
Mar*_*ers 11
您正在寻找内存中的文件对象; 在Python 2中cStringIO.StringIO(),对于Python 3 io.BytesIO(); 这些行为就像文件对象一样,你可以pickle.dump()写这些.
但是,更简单的路径是使用pickle.dumps()直接转储到字符串对象.
在幕后,pickle.dumps()您可以创建一个内存中的文件对象,将pickle数据写入它并为您检索字符串结果; 看到源代码:
def _dumps(obj, protocol=None, *, fix_imports=True):
f = io.BytesIO()
_Pickler(f, protocol, fix_imports=fix_imports).dump(obj)
res = f.getvalue()
assert isinstance(res, bytes_types)
return res
Run Code Online (Sandbox Code Playgroud)
但这样你就不必自己做额外的工作了.
| 归档时间: |
|
| 查看次数: |
3439 次 |
| 最近记录: |