OCI存储桶访问代码报错:TypeError缺失bucket_name参数求助
解决OCI Object Storage list_objects调用的TypeError错误
错误原因
你遇到的TypeError是因为OCI Python SDK的ObjectStorageClient.list_objects()方法需要两个必填参数:namespace_name和bucket_name,而你只传递了一个参数。同时,该方法返回的是响应对象,直接遍历会出错。
修正后的代码
import oci bucket_name = "BACKUP_W_STAGE" # 初始化签名和客户端 signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner() client = oci.object_storage.ObjectStorageClient(config={"region": "us-phoenix-1"}, signer=signer) # 获取租户的对象存储命名空间 namespace = client.get_namespace().data # 正确调用list_objects,传入命名空间和桶名 response = client.list_objects(namespace_name=namespace, bucket_name=bucket_name) # 遍历返回的对象列表 for obj in response.data.objects: print(obj.name)
关键修正点
- 添加命名空间参数:OCI对象存储的所有操作都需要指定租户的
namespace_name,可以通过client.get_namespace().data获取。 - 正确传递参数:
list_objects()需要显式传递namespace_name和bucket_name两个关键字参数(关键字参数写法更清晰易读)。 - 遍历正确的对象列表:
list_objects()返回的是ListObjectsResponse对象,实际的对象列表在response.data.objects中,不能直接遍历响应对象本身。
内容的提问来源于stack exchange,提问作者Asit Dey
相关产品推荐
相关产品推荐

