You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python获取IBM Cloud Object Storage Bucket内的所有文件

错误原因

你调用的cos.Object()是用于操作单个指定对象的接口,要求同时传入存储桶名称和对象键(文件路径)两个必填参数,你仅传入了存储桶名称,缺少对象键参数,因此触发参数缺失报错。同时该接口本身也不支持批量拉取存储桶下全部对象的需求。

正确实现代码

首先确保你已经完成了COS客户端的初始化,完整的实现逻辑如下:

import ibm_boto3
from ibm_botocore.client import Config, ClientError

# 先完成COS客户端初始化(替换为你自己的配置参数)
cos = ibm_boto3.resource(
    's3',
    ibm_api_key_id='你的IBM_COS_API_KEY',
    ibm_service_instance_id='你的COS服务实例ID',
    config=Config(signature_version='oauth'),
    endpoint_url='你的COS区域端点地址'
)

my_bucket_name = "你的存储桶名称"

# 正确写法:先获取存储桶实例,再拉取所有对象
bucket = cos.Bucket(my_bucket_name)
all_files = bucket.objects.all()

# 遍历输出所有对象信息示例
for obj in all_files:
    print(f"文件名:{obj.key},文件大小:{obj.size}字节,最后修改时间:{obj.last_modified}")
补充说明
  • 如果存储桶内对象数量超过1000个,bucket.objects.all()会自动处理分页拉取,不需要手动处理分页逻辑
  • 如果需要过滤指定前缀的对象,可以使用bucket.objects.filter(Prefix="指定前缀路径")方法
  • 操作时建议添加异常捕获逻辑,处理权限不足、存储桶不存在等常见异常,示例如下:
try:
    bucket = cos.Bucket(my_bucket_name)
    all_files = list(bucket.objects.all())
except ClientError as e:
    error_code = e.response['Error']['Code']
    if error_code == 'NoSuchBucket':
        print("指定存储桶不存在")
    elif error_code == 'AccessDenied':
        print("没有该存储桶的访问权限")
    else:
        print(f"操作出错:{e}")

内容的提问来源于stack exchange,提问作者sysOut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:45:04