gpt4 book ai didi

Python3 unpickle 字节对象的字符串表示

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:58 26 4
gpt4 key购买 nike

是否有一种好方法来加载表示为字符串的字节对象,以便可以对其进行 unpickled?

基本示例

这是一个愚蠢的例子:

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 似乎是错误的,尤其是当字符串可能来自网络或来自文件时。

...

对更好的解决方案有什么建议吗?

谢谢!

最佳答案

出于安全考虑,您可以使用 ast.literal_eval而不是 eval:

>>> import ast
>>> pickle.loads(ast.literal_eval(string_of_bytes_obj))
{'b': 2222, 'a': 1111}

关于Python3 unpickle 字节对象的字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52890916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com