2024-05-23 16:49:58 发布
网友
我有一个非常独特的例子,我的Python程序生成大量的动态代码(比如动态生成的类和lambda),它需要用Pickle保存状态。我想尽可能多地保存,但不能保存不可复制的对象是可以接受的。你知道吗
换句话说,我希望能够通过对每个不可pickle对象执行del mydict[unpickleablekey]来pickle dictmydict,它包含一些不可pickle对象。你知道吗
del mydict[unpickleablekey]
mydict
实现这一点的最简单和最python的方法是什么?你知道吗
在尝试用无法pickle的实例序列化JSON时,我遇到了类似的问题。我写了一个定制的JSON编码器,可能对你的情况有所帮助。你知道吗
from json import JSONEncoder class JsonEncoder(JSONEncoder): def default(self, obj): return repr(obj)
那么您希望使用:
encoded_dict = JsonEncoder().encode(mydict) with open('dump.pkl', 'w') as f: pickle.dump(encoded_dict, f)
重读:
import json with open('dump.pkl', 'r') as f: decoded_dict = json.loads(pickle.load(f))
需要注意的一点是,使用repr对值进行编码将导致整数或浮点值之类的值转换为字符串表示形式,而不是真正的类型。如果类型不是int、float等,则可以增强默认编码器以仅返回repr。。。你知道吗
在尝试用无法pickle的实例序列化JSON时,我遇到了类似的问题。我写了一个定制的JSON编码器,可能对你的情况有所帮助。你知道吗
那么您希望使用:
重读:
需要注意的一点是,使用repr对值进行编码将导致整数或浮点值之类的值转换为字符串表示形式,而不是真正的类型。如果类型不是int、float等,则可以增强默认编码器以仅返回repr。。。你知道吗
相关问题 更多 >
编程相关推荐