使用openstacksdk从openstack的对象存储中检索数据

2024-05-18 22:28:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用openstacksdk的connection.get_object(container,object)检索已上载到openstack对象存储的pickle数据,我从中得到响应,但是文件体是字符串,我甚至可以使用outfile选项将其保存到文件中,而不会出现问题。不过,我希望能够直接使用它,而不必先将其保存到文件中,然后再将其加载到pickle中

简单地使用pickle的load和load都不起作用,因为它们都不接受字符串对象。是否有其他方法可以检索数据以便直接处理pickle数据,或者是否有某种方法可以解析为字符串/设置get_object()上的配置参数


Tags: 文件数据对象方法字符串getopenstackobject
2条回答

编辑: 我找到了解决方案,对于使用openstacksdk从openstack检索到的pickle对象或任何其他文件,有几种方法可以不借助磁盘处理数据

首先,我实现的解决方案是使用openstack的连接方法get_object_raw:

conn = connection(foo,bar, arg**) 
pickle.loads(conn.get_object_raw('containerName', 'ObjectName').content)

.get_object_raw返回一个带有属性content的响应请求对象,该属性是二进制文件内容,它是可以使用pickle加载的pickle内容

您还可以使用io.BytesIO创建一个临时内存文件,并将其用作连接对象的get_对象中的outfile参数

如果您使用的是Python 3-pickle需要一个bytes-like objectload方法采用文件路径,并依赖file类型来处理将bytes提供回pickle的操作。使用loads方法时,需要为其提供一个bytes-like object,而不是一个字符串,因此需要将字符串转换为字节

Best way to convert string to bytes in Python 3?

相关问题 更多 >

    热门问题