更新时间:2026-04-08 GMT+08:00
分享

下载对象-批量下载(Python SDK)

功能说明

批量下载指定的对象。

接口约束

  • 您必须是桶拥有者或拥有下载对象的权限,才能下载对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:GetObject权限,如果使用桶策略则需授予GetObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略配置对象策略
  • OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点
  • 对于存储类别为归档存储或深度归档存储的对象,需要确认对象的状态为“已恢复”才能对其进行下载。

方法定义

ObsClient.downloadFiles(bucketName, prefix, downloadFolder, taskNum, taskQueueSize, headers, imageProcess, interval, taskCallback, progressCallback, threshold, partSize, subTaskNum, enableCheckpoint, checkpointFile, extensionHeaders)

请求参数

表1 请求参数列表

参数名称

参数类型

是否必选

描述

bucketName

str

必选

参数解释

桶名。

约束限制:

  • 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。
  • 桶命名规则如下:
    • 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。
    • 禁止使用IP地址。
    • 禁止以“-”或“.”开头及结尾。
    • 禁止两个“.”相邻(如:“my..bucket”)。
    • 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。
  • 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。

默认取值:

prefix

str

必选

参数解释

批量下载对象前缀。

例如,假设您下载以下对象:logs/day1、logs/day2、logs/day3和ExampleObject.jpg。如果您将logs/指定为前缀,将下载以字符串“logs/”开头的三个对象。如果您指定空的前缀且请求中没有其他过滤条件,将返回桶中的所有对象。

取值范围:

长度大于0且不超过1024的字符串。

默认取值:

downloadFolder

str

必选

参数解释

批量下载对象的本地文件夹全路径。

默认取值:

taskNum

int

可选

参数解释:

下载时的最大并发数。

取值范围:

1~10000

默认取值:

8

taskQueueSize

int

可选

参数解释:

批量下载时的任务队列大小

取值范围:

默认取值:

20000

headers

GetObjectHeader

可选

参数解释:

下载对象的头域,用于获取对象的基本信息,包括存储类别、冗余策略等。

取值范围:

参考GetObjectHeader

默认取值:

imageProcess

str

可选

参数解释:

图片处理参数,描述针对对象的图片处理命令或处理样式。例如如果想表示对图片依次进行缩放、旋转,取值:image/resize,m_fixed,w_100,h_100/rotate,90。

取值范围:

命令方式:image/命令参数

样式方式:style/样式名称

详细参数说明参见处理图片

默认取值:

如果不输入处理命令,将返回原图。

interval

int

可选

参数解释:

字节间隔。

取值范围:

默认取值:

102400

taskCallback

callable

可选

参数解释:

任务回调函数。

默认取值:

progressCallback

callable

可选

参数解释:

获取下载进度的回调函数。

默认取值:

说明:

该回调函数依次包含三个参数:已下载的字节数、总字节数、已使用的时间(单位:秒),示例代码参考下载对象-获取下载进度

threshold

int

可选

参数解释:

批量下载阈值。

默认取值:

5 * 1024 * 1024 * 1024。

partSize

int

可选

参数解释:

分段大小。

取值范围:

取值范围是100KB~5GB,单位字节。

默认取值:

5MB。

subTaskNum

int

可选

参数解释:

批量下载时断点续传的并发任务数。

取值范围:

1~10000。

默认取值:

1,即不设置则默认串行下载。

enableCheckpoint

bool

可选

参数解释:

是否开启断点续传模式。

取值范围:

True:开启断点续传模式。

False:关闭断点续传模式。

默认取值:

False:关闭断点续传模式。

checkpointFile

str

可选

参数解释:

记录下载进度的文件,只在断点续传模式下有效。

默认取值:

当该值为空时,默认与下载对象的本地文件路径同目录。

extensionHeaders

dict

可选

参数解释:

接口的拓展头域。

取值范围:

参考自定义头域

默认取值:

表2 GetObjectHeader

参数名称

参数类型

是否必选

描述

range

str

可选

参数解释:

指定下载的范围。

取值范围:

取值区间:[0,对象长度-1],格式:x-y。

约束限制:

如果range的最大长度超出对象长度-1,仍旧取对象长度-1。

默认取值:

if_match

str

可选

参数解释:

指定一个预设的Etag值,如果下载对象的ETag值与该参数值相同,则返回对象内容,否则返回错误。

取值范围:

长度为32的字符串。

默认取值:

if_none_match

str

可选

参数解释:

指定一个预设的Etag值,如果下载对象的ETag值与该参数值不相同,则返回对象内容,否则返回错误。

取值范围:

长度为32的字符串。

默认取值:

if_modified_since

str

DateTime

可选

参数解释:

如果对象在指定的时间后有修改,则返回对象内容,否则返回错误。

约束限制:

可以使用DateTime生成日期;

代码示例:DateTime(year=2023, month=9, day=12)。

默认取值:

if_unmodified_since

str

DateTime

可选

参数解释:

如果对象在指定的时间后没有修改,则返回对象内容,否则返回错误。

约束限制:

可以使用DateTime生成日期;

代码示例:DateTime(year=2023, month=9, day=12)。

默认取值:

origin

str

可选

参数解释:

预请求指定的跨域请求Origin(通常为域名)。

约束限制:

每个匹配规则允许使用最多一个“*”通配符。

默认取值:

requestHeaders

str

可选

参数解释:

跨域请求可以使用的HTTP头域。只有匹配上允许的头域中的配置,才被视为是合法的CORS请求。

约束限制:

每个头域可填写一个“*”通配符,不支持&、:、<、空格以及中文字符。

默认取值:

sseHeader

SseCHeader

可选

参数解释:

服务端解密头信息,详见SseCHeader

约束限制:

如果客户端的对象上传时,使用了客户提供的加密密钥进行服务端加密,当下载对象时,同样也必须在消息中提供密钥

默认取值:

表3 DateTime

参数名称

参数类型

描述

year

int

参数解释:

UTC时间中的年。

默认取值:

month

int

参数解释:

UTC时间中的月。

默认取值:

day

int

参数解释:

UTC时间中的日。

默认取值:

hour

int

参数解释:

UTC时间中的小时。

约束限制:

24小时制。

默认取值:

0

min

int

参数解释:

UTC时间中的分钟。

默认取值:

0

sec

int

参数解释:

UTC时间中的秒数。

默认取值:

0

表4 SseCHeader

参数名称

参数类型

是否必选

描述

encryption

str

必选

参数解释:

以SSE-C方式加密对象。

取值范围:

AES256,即高级加密标准(Advanced Encryption Standard,AES)。

默认取值:

key

str

必选

参数解释:

SSE-C方式下加密的密钥,与加密方式对应,如encryption=‘AES256’,密钥就是由AES256加密算法得到的密钥。

取值范围:

长度为32字符串。

默认取值:

返回结果

表5 返回结果

类型

说明

GetResult

参数解释:

SDK公共结果对象。

表6 GetResult

参数名称

参数类型

描述

status

int

参数解释:

HTTP状态码。

取值范围:

状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码

默认取值:

reason

str

参数解释:

HTTP文本描述。

默认取值:

errorCode

str

参数解释:

OBS服务端错误码,当status参数小于300时为空。

默认取值:

errorMessage

str

参数解释:

OBS服务端错误描述,当status参数小于300时为空。

默认取值:

requestId

str

参数解释:

OBS服务端返回的请求ID。

默认取值:

indicator

str

参数解释:

OBS服务端返回的错误定位码。

默认取值:

hostId

str

参数解释:

请求的服务端ID,当status参数小于300时为空。

默认取值:

resource

str

参数解释:

发生错误时相关的桶或对象,当status参数小于300时为空。

默认取值:

header

list

参数解释:

响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。

默认取值:

body

object

参数解释:

操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。

默认取值:

代码样例

1
2
3
4
5
6
7
8
9
try:
    
    resp = obsClient.downloadFiles(bucketName='bucketname', prefix='objectkey', downloadFolder='localFolder') 
    result = "DownloadFiles summary : total_task:%d, success:%d ,failure:%d" % (resp.total_tasks, resp.successful_tasks, resp.failed_tasks)
    print(result)

except:
    import traceback
    print(traceback.format_exc())

相关链接

相关文档