详情页标题前

阿里云对象存储OSSPython流式下载-云淘科技

详情页1

如果要下载文件太大,或者一次性下载耗时太长,您可以通过流式下载,一次处理部分内容,直到完成文件的下载。

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见Python初始化。
  • 要流式下载,您必须有oss:GetObject权限。具体操作,请参见为RAM用户授权自定义的权限策略。

示例代码

以下代码用于流式下载examplebucket中的exampleobject.txt文件。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 创建Server对象。
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# bucket.get_object的返回值是一个类文件对象(File-Like Object),同时也是一个可迭代对象(Iterable)。
# 填写Object的完整路径。Object完整路径中不能包含Bucket名称。
object_stream = bucket.get_object('exampleobject.txt')
print(object_stream.read())

# 由于get_object接口返回的是一个stream流,需要执行read()后才能计算出返回Object数据的CRC checksum,因此需要在调用该接口后进行CRC校验。
if object_stream.client_crc != object_stream.server_crc:
    print("The CRC checksum between client and server is inconsistent!")

以下代码用于将exampleobject.txt文件的流式数据下载到本地D:\localpath路径下的examplefile.txt。

import shutil
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 创建Server对象。
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# object_stream是类文件对象,您可以使用shutil.copyfileobj方法,将流式数据下载到本地文件中。
# 填写Object的完整路径。Object完整路径中不能包含Bucket名称。
object_stream = bucket.get_object('exampleobject.txt')
# 下载Object到本地文件,并保存到指定的本地路径中。如果指定的本地文件存在会覆盖,不存在则新建。
# 如果未指定本地路径,则下载后的文件默认保存到示例程序所属项目对应本地路径中。
with open('D:\localpath\examplefile.txt', 'wb') as local_fileobj:
    shutil.copyfileobj(object_stream, local_fileobj)

以下代码用于将exampleobject.txt文件流式拷贝到另一个文件exampleobjectnew.txt中。

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 创建Server对象。
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# object_stream是一个可迭代对象,您可以将流式数据拷贝到同一Bucket中的另一个文件中。
# 填写Object的完整路径。Object完整路径中不能包含Bucket名称。
object_stream = bucket.get_object('exampleobject.txt')
# 填写另一个Object的完整路径。Object完整路径中不能包含Bucket名称。
bucket.put_object('exampleobjectnew.txt', object_stream)

相关文档

  • 关于流式下载的完整示例代码,请参见GitHub示例。

  • 关于流式下载的API接口说明,请参见GetObject。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158174.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSS.NET异常处理-云淘科技

    OSS .NET SDK 包含两类异常,一类是客户端异常ClientException,另一类是服务器端异常OSSException,它们均继承自RuntimeException。 ClientException ClientException指客户端尝试向OSS发送请求以及数据传输时遇到的异常。例如,当发送请求时网络连接不可用,则会抛出ClientExce…

    阿里云对象存储 2023年12月10日
  • 阿里云人工智能平台PAITensorFlow常见问题-云淘科技

    本文为您介绍TensorFlow的相关问题。 如何开通深度学习功能? 如何支持多Python文件引用? 如何上传数据到OSS? 如何读取OSS数据? 如何为OSS写入数据? 为什么运行过程中出现OOM? TensorFlow有哪些案例? 如何查看TensorFlow相关日志? 配置两个GPU时,model_average_iter_interval有什么作用…

    2023年12月10日
  • 阿里云对象存储OSSGo请求者付费模式-云淘科技

    请求者付费模式是指由请求者支付读取存储空间(Bucket)内数据时产生的流量费用和请求费用,而Bucket拥有者仅支付存储费用。当您希望共享数据,但又不希望产生流量费用和请求费用时,您可以开启此功能。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的R…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSS存储空间地域属性-云淘科技

    OSS存储空间(Bucket)地域属性分为有地域属性和无地域属性。 有地域属性Bucket 有地域属性Bucket适用于OSS通用场景。您在创建Bucket时需选择有地域属性,并指定Bucket所在的具体Region,例如华东1(杭州)。更多信息,请参见访问域名和数据中心。 无地域属性Bucket 无地域属性Bucket适用于对地域属性不敏感且仅支持外网访问…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSS0048-00000103-云淘科技

    问题描述 使用浏览器通过OSS标准域名访问文件时,可能会出现无法预览而是直接下载的现象。 问题原因 在2019/09/29 17:00之后创建的Bucket,使用OSS域名访问文件,且文件的ContentType属于以下类型之一时, image/jpeg image/gif image/tiff image/png image/webp image/svg+…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。