我试图使用openstacksdk的connection.get_object(container,object)
检索已上载到openstack对象存储的pickle数据,我从中得到响应,但是文件体是字符串,我甚至可以使用outfile选项将其保存到文件中,而不会出现问题。不过,我希望能够直接使用它,而不必先将其保存到文件中,然后再将其加载到pickle中
简单地使用pickle的load和load都不起作用,因为它们都不接受字符串对象。是否有其他方法可以检索数据以便直接处理pickle数据,或者是否有某种方法可以解析为字符串/设置get_object()上的配置参数
编辑: 我找到了解决方案,对于使用openstacksdk从openstack检索到的pickle对象或任何其他文件,有几种方法可以不借助磁盘处理数据
首先,我实现的解决方案是使用openstack的连接方法get_object_raw:
.get_object_raw返回一个带有属性content的响应请求对象,该属性是二进制文件内容,它是可以使用pickle加载的pickle内容
您还可以使用io.BytesIO创建一个临时内存文件,并将其用作连接对象的get_对象中的outfile参数
如果您使用的是Python 3-
pickle
需要一个bytes-like object。load方法采用文件路径,并依赖file
类型来处理将bytes
提供回pickle
的操作。使用loads
方法时,需要为其提供一个bytes-like object
,而不是一个字符串,因此需要将字符串转换为字节Best way to convert string to bytes in Python 3?
相关问题 更多 >
编程相关推荐