有没有一种好方法来加载表示为字符串的 bytes 对象,以便可以对其进行 unpickle?
基本示例
这是一个愚蠢的例子:
import pickle
mydict = { 'a': 1111, 'b': 2222 }
string_of_bytes_obj = str(pickle.dumps(mydict)) # Deliberate string representation for this quick example.
unpickled_dict = pickle.loads(string_of_bytes_obj) # ERROR! Loads takes bytes-like object and not string.
尝试解决方案
一种解决方案当然是eval
字符串:
unpickled_dict = pickle.loads(eval(string_of_bytes_obj))
但是,似乎错误eval
,特别是当字符串可能来自网络或文件时。
...
对于更好的解决方案有什么建议吗?
Thanks!
出于安全考虑,您可以使用ast.literal_eval代替eval
:
>>> import ast
>>> pickle.loads(ast.literal_eval(string_of_bytes_obj))
{'b': 2222, 'a': 1111}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)