相关疑难解决方法(0)

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

有没有一种好方法来加载表示为字符串的 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.
Run Code Online (Sandbox Code Playgroud)

尝试解决方案

一种解决方案当然是eval字符串:

unpickled_dict = pickle.loads(eval(string_of_bytes_obj))
Run Code Online (Sandbox Code Playgroud)

但是,似乎是错误的eval,特别是当字符串可能来自网络或文件时。

...

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

谢谢!

python pickle python-3.x

5
推荐指数
1
解决办法
1万
查看次数

我可以在内存中腌制Python对象而不是物理文件吗?

我已经看到并编写了用于在Python中pickle对象的代码.但它们都创建了包含数据的物理文件.我希望我将数据写入内存并读取并腌制并传输.

它甚至可能吗?

from PIL import ImageGrab
import io
import codecs
import pickle


# Model class to send Process Data to the server
class ProcessData:
 process_id = 0
 project_id = 0
 task_id = 0
 start_time = 0
 end_time = 0
 user_id = 0
 weekend_id = 0

# Model class to send image data to the server
class ProcessScreen:
 process_id = 0
 image_data = bytearray()


image_name = "Dharmindar_screen.jpg"
ImageGrab.grab().save(image_name,"JPEG")

image_data = None
with codecs.open(image_name,'rb') as image_file:
 image_data = image_file.read()



serialized_process_data = io.BytesIO() …
Run Code Online (Sandbox Code Playgroud)

python serialization pickle

0
推荐指数
1
解决办法
2422
查看次数

标签 统计

pickle ×2

python ×2

python-3.x ×1

serialization ×1