如何通过HTTP服务器在python3保存数据框列中的字节对象?



我有一个pandas数据框架。'data'列包含字节对象(二进制文件)

df = pd。DataFrame({'file_hash': [01ccba93f3647ca50…]739 b24dc0dfea…],"数据"(b: 'x x9cd xbbuT x1c xc1之前 xb7—— x12 xdc xf8 xdc……b 'x x9c xcc xbaeTT xdf x1b ? z t ( xa5A % $ x15a…]})

现在,我通过http服务器发送这个

bytes_obj = zlib.compress((output.to_csv(index=False)).encode())
self.wfile.write(bytes_obj)

当我能够在客户端访问数据框架时,

response = requests.get(url)
response_bytes = response.content
response_dataframe = pd.read_csv(io.BytesIO(zlib.decompress(response_bytes)))

bytes对象现在是像"b'xx9cdxbbuTx1cxc1xb7-..."这样的字符串。如果我把这些字符串转换成b'b'x\x9cd\xbbuT\x1c\xc1\xb7

我尝试了很多方法,但就是不能得到确切的字节对象。如果你能给我一些建议,我将非常感激。

感谢

这听起来很蠢,但我想我应该提一下解决方案,因为它可以节省人们的时间。

我只是使用了ast模块中的ast.literal_eval函数。

基本上,liternal_eval将看起来像bytes对象的字符串转换为真正的bytesobject。因此,字符串"b'xx9cdxbbuTx1cxc1xb7-..."变成字节对象b'xx9cdxbbuTx1cxc1xb7-…

在我的例子中,

response_dataframe["data"] = response_dataframe["data"].apply(lambda x: ast.literal_eval(x))

而不是data列包含我需要的字节对象。

最新更新