据我所知,在序列化对象时,使用serpent比pickle更安全。在
我使用以下类别:
import serpent
class Test:
def save(self, fileName) :
ser = serpent.dumps({"schema": self}, indent=True)
open(fileName, "wb" ).write(ser)
def load(self, fileName) :
self = serpent.load(open(fileName, "rb"))["schema"]
def someFunction(self) :
[...]
我想做点像
^{pr2}$但是,当我调用Test().load()时,我得到的是一个对象树,而不是一个对象。所以我不能用它。。。如何从对象树中获取对象?这样做,我会不会又遇到和泡菜一样的安全问题呢?在
EDIT:FromPyro's doc:serpent序列化为Python文本表达式。接受很多不同的类型。许多将被连载为dicts。如果需要,您可能需要显式地将文本转换回接收端的特定类型,因为大多数自定义类不是自动处理的。在
所以,我想最后的问题是:有没有什么诀窍可以把这样的文字词典翻译成宾语?我想,它一定是很多人做的。。。在
这个问题可能有更好的答案,但由于没有人提出,我可以分享一些我自己研究的解决办法。这个问题的解决方案在很大程度上取决于需要序列化/反序列化的类的结构,但是要了解如何进行这种解析,可以看看在Pyro4.util中实现的dict_-to-u类方法。在
相关问题 更多 >
编程相关推荐