下载对象-批量下载(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)
请求参数
参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
bucketName | str | 必选 | 参数解释: 桶名。 约束限制:
默认取值: 无 |
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 | 可选 | 参数解释: 下载对象的头域,用于获取对象的基本信息,包括存储类别、冗余策略等。 取值范围: 默认取值: 无 | |
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 | 可选 | 参数解释: 接口的拓展头域。 取值范围: 参考自定义头域。 默认取值: 无 |
参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
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(year=2023, month=9, day=12)。 默认取值: 无 |
if_unmodified_since | str 或 | 可选 | 参数解释: 如果对象在指定的时间后没有修改,则返回对象内容,否则返回错误。 约束限制: 可以使用DateTime生成日期; 代码示例:DateTime(year=2023, month=9, day=12)。 默认取值: 无 |
origin | str | 可选 | 参数解释: 预请求指定的跨域请求Origin(通常为域名)。 约束限制: 每个匹配规则允许使用最多一个“*”通配符。 默认取值: 无 |
requestHeaders | str | 可选 | 参数解释: 跨域请求可以使用的HTTP头域。只有匹配上允许的头域中的配置,才被视为是合法的CORS请求。 约束限制: 每个头域可填写一个“*”通配符,不支持&、:、<、空格以及中文字符。 默认取值: 无 |
sseHeader | 可选 | 参数解释: 服务端解密头信息,详见SseCHeader。 约束限制: 如果客户端的对象上传时,使用了客户提供的加密密钥进行服务端加密,当下载对象时,同样也必须在消息中提供密钥 默认取值: 无 |
返回结果
类型 | 说明 |
|---|---|
参数解释: SDK公共结果对象。 |
参数名称 | 参数类型 | 描述 |
|---|---|---|
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()) |

