诸如 put_object 这样的上传接口都会有 data 参数用于接收用户数据。 data 可以是下述类型
  • unicode类型(对于Python3则是str类型):内部会自动转换为UTF-8的bytes
  • bytes类型:不做任何转换
  • file-like object:对于可以seek和tell的file object,从当前位置读取直到结束。其他类型,请确保当前位置是文件开始。
  • 可迭代类型:对于无法探知长度的数据,要求一定是可迭代的。此时会通过Chunked Encoding传输。
  • Bucket配置修改方法中的input参数

    诸如 put_bucket_cors 这样的Bucket配置修改接口都会有 input 参数接收用户提供的配置数据。 input 可以是下述类型

  • Bucket配置信息相关的类,如 BucketCors
  • unicode类型(对于Python3则是str类型)
  • 经过utf-8编码的bytes类型
  • file-like object
  • 可迭代类型,会通过Chunked Encoding传输
  • 也就是说 input 参数可以比 data 参数多接受第一种类型的输入。

    返回值

    Service Bucket 类的大多数方法都是返回 RequestResult 及其子类。 RequestResult 包含了HTTP响应的状态码、头部以及OSS Request ID,而它的子类则包含用户真正想要的结果。例如, ListBucketsResult.buckets 就是返回的Bucket信息列表; GetObjectResult 则是一个file-like object,可以调用 read() 来获取响应的 HTTP包体。

    一般来说Python SDK可能会抛出三种类型的异常,这些异常都继承于 OssError
  • ClientError :由于用户参数错误而引发的异常;
  • ServerError 及其子类:OSS服务器返回非成功的状态码,如4xx或5xx;
  • RequestError :底层requests库抛出的异常,如DNS解析错误,超时等;
  • 当然, Bucket.put_object_from_file Bucket.get_object_to_file 这类函数还会抛出文件相关的异常。

    指定下载范围

    诸如 get_object 以及 upload_part_copy 这样的函数,可以接受 byte_range 参数,表明读取数据的范围。该参数是一个二元tuple:(start, last)。这些接口会把它转换为Range头部的值,如:

  • byte_range 为 (0, 99) 转换为 ‘bytes=0-99’,表示读取前100个字节
  • byte_range 为 (None, 99) 转换为 ‘bytes=-99’,表示读取最后99个字节
  • byte_range 为 (100, None) 转换为 ‘bytes=100-‘,表示读取第101个字节到文件结尾的部分(包含第101个字节)
  • 分页罗列

    罗列各种资源的接口,如 list_buckets list_objects 都支持 分页查询。通过设定分页标记(如: marker key_marker )的方式可以指定查询某一页。首次调用将分页标记设为空(缺省值,可以不设), 后续的调用使用返回值中的 next_marker next_key_marker 等。每次调用后检查返回值中的 is_truncated ,其值为 False 说明 已经到了最后一页。

    上传下载进度

    上传下载接口,诸如 get_object put_object resumable_upload ,都支持进度回调函数,可以用它实现进度条等功能。

    progress_callback 的函数原型如下

    def progress_callback(bytes_consumed, total_bytes):
        '''进度回调函数。
        :param int bytes_consumed: 已经消费的字节数。对于上传,就是已经上传的量;对于下载,就是已经下载的量。
        :param int total_bytes: 总长度。
    
    其中 total_bytes 对于上传和下载有不同的含义:
  • 上传:当输入是bytes或可以seek/tell的文件对象,那么它的值就是总的字节数;否则,其值为None
  • 下载:当返回的HTTP相应中有Content-Length头部,那么它的值就是Content-Length的值;否则,其值为None
  • HTTP Date格式,形如 Sat, 05 Dec 2015 11:04:39 GMT 这样的GMT时间。 用在If-Modified-Since、Last-Modified这些HTTP请求、响应头里。
  • ISO8601格式,形如 2015-12-05T00:00:00.000Z。 用在生命周期管理配置、列举Bucket结果中的创建时间、列举文件结果中的最后修改时间等处。
  • http_date 函数把Unix Time转换为HTTP Date;而 http_to_unixtime 则做相反的转换。如

    >>> import oss2, time
    >>> unix_time = int(time.time())             # 当前UNIX Time,设其值为 1449313829
    >>> date_str = oss2.http_date(unix_time)     # 得到 'Sat, 05 Dec 2015 11:10:29 GMT'
    >>> oss2.http_to_unixtime(date_str)          # 得到 1449313829
    

    生成HTTP协议所需的日期(即HTTP Date)时,请使用 http_date , 不要使用 strftime 这样的函数。因为后者是和locale相关的。 比如,strftime 结果中可能会出现中文,而这样的格式,OSS服务器是不能识别的。

    iso8601_to_unixtime 把ISO8601格式转换为Unix Time;date_to_iso8601iso8601_to_date 则在ISO8601格式的字符串和 datetime.date之间相互转换。如

    >>> import oss2
    >>> d = oss2.iso8601_to_date('2015-12-05T00:00:00.000Z')  # 得到 datetime.date(2015, 12, 5)
    >>> date_str = oss2.date_to_iso8601(d)                    # 得到 '2015-12-05T00:00:00.000Z'
    >>> oss2.iso8601_to_unixtime(date_str)                    # 得到 1449273600
    class oss2.api.Bucket(auth, endpoint, bucket_name, is_cname=False, session=None, connect_timeout=None, app_name='', enable_crc=True)[source]
    

    Bases: oss2.api._Base

    用于Bucket和Object操作的类,诸如创建、删除Bucket,上传、下载Object等。

    用法(假设Bucket属于杭州区域)

    >>> import oss2
    >>> auth = oss2.Auth('your-access-key-id', 'your-access-key-secret')
    >>> bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'your-bucket')
    >>> bucket.put_object('readme.txt', 'content of the object')
    <oss2.models.PutObjectResult object at 0x029B9930>
    
  • auth (oss2.Auth) – 包含了用户认证信息的Auth对象
  • endpoint (str) – 访问域名或者CNAME
  • bucket_name (str) – Bucket名
  • is_cname (bool) – 如果endpoint是CNAME则设为True;反之,则为False。
  • session (oss2.Session) – 会话。如果是None表示新开会话,非None则复用传入的会话
  • connect_timeout (float) – 连接超时时间,以秒为单位。
  • app_name (str) – 应用名。该参数不为空,则在User Agent中加入其值。 注意到,最终这个字符串是要作为HTTP Header的值传输的,所以必须要遵循HTTP标准。
  • append_object(key, position, data, headers=None, progress_callback=None, init_crc=None)[source]

    追加上传一个文件。

    Parameters:
    • key (str) – 新的文件名,或已经存在的可追加文件名
    • position (int) – 追加上传一个新的文件, position 设为0;追加一个已经存在的可追加文件, position 设为文件的当前长度。 position 可以从上次追加的结果 AppendObjectResult.next_position 中获得。
    • data (str、bytes、file-like object或可迭代对象) – 用户数据
    • headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 用户指定的HTTP头部。可以指定Content-Type、Content-MD5、x-oss-开头的头部等
    • progress_callback – 用户指定的进度回调函数。参考 上传下载进度
    • Returns:

      AppendObjectResult

      Raises:

      如果 position 和当前文件长度不一致,抛出 PositionNotEqualToLength ; 如果当前文件不是可追加类型,抛出 ObjectNotAppendable ; 还会抛出其他一些异常

      Parameters:
      • key (str) – 待上传的文件名,这个文件名要和 init_multipart_upload() 的文件名一致。
      • upload_id (str) – 分片上传ID
      • parts (list of PartInfo <oss2.models.PartInfo>) – PartInfo列表。PartInfo中的part_number和etag是必填项。其中的etag可以从 upload_part() 的返回值中得到。
      • headers (可以是dict,建议是oss2.CaseInsensitiveDict) – HTTP头部
      • Returns:

        PutObjectResult

        Parameters:
        • permission (str) – 指定Bucket的ACL。可以是oss2.BUCKET_ACL_PRIVATE(推荐、缺省)、oss2.BUCKET_ACL_PUBLIC_READ或是 oss2.BUCKET_ACL_PUBLIC_READ_WRITE。
        • inputBucketCreateConfig object
        • get_live_channel_history(channel_name)[source]

          获取live channel中最近的最多十次的推流记录,记录中包含推流的起止时间和远端的地址

          param str channel_name: 要获取最近推流记录的live channel的名称

          return: GetLiveChannelHistoryResult

          get_live_channel_stat(channel_name)[source]

          获取live channel当前推流的状态

          param str channel_name: 要获取推流状态的live channel的名称

          return: GetLiveChannelStatResult

          get_object(key, byte_range=None, headers=None, progress_callback=None, process=None)[source]

          下载一个文件。

          >>> result = bucket.get_object('readme.txt')
          >>> print(result.read())
          'hello world'
          
        • key – 文件名
        • byte_range – 指定下载范围。参见 指定下载范围
        • headers (可以是dict,建议是oss2.CaseInsensitiveDict) – HTTP头部
        • progress_callback – 用户指定的进度回调函数。参考 上传下载进度
        • process – oss文件处理,如图像服务等。指定后process,返回的内容为处理后的文件。
        • Returns:

          file-like object

          Raises:

          如果文件不存在,则抛出 NoSuchKey ;还可能抛出其他异常

          get_object_meta(key)[source]

          获取文件基本元信息,包括该Object的ETag、Size(文件大小)、LastModified,并不返回其内容。

          HTTP响应的头部包含了文件基本元信息,可以通过 GetObjectMetaResultlast_modifiedcontent_length,`etag` 成员获得。

          get_object_to_file(key, filename, byte_range=None, headers=None, progress_callback=None, process=None)[source]

          下载一个文件到本地文件。

        • filename – 本地文件名。要求父目录已经存在,且有写权限。
        • byte_range – 指定下载范围。参见 指定下载范围
        • headers (可以是dict,建议是oss2.CaseInsensitiveDict) – HTTP头部
        • progress_callback – 用户指定的进度回调函数。参考 上传下载进度
        • process – oss文件处理,如图像服务等。指定后process,返回的内容为处理后的文件。
        • Returns:

          如果文件不存在,则抛出 NoSuchKey ;还可能抛出其他异常

          head_object(key, headers=None)[source]

          获取文件元信息。

          HTTP响应的头部包含了文件元信息,可以通过 RequestResultheaders 成员获得。

          >>> result = bucket.head_object('readme.txt')
          >>> print(result.content_type)
          text/plain
          list_live_channel(prefix='', marker='', max_keys=100)[source]
          

          列举出Bucket下所有符合条件的live channel

          param: str prefix: list时channel_id的公共前缀 param: str marker: list时指定的起始标记 param: int max_keys: 本次list返回live channel的最大个数

          return: ListLiveChannelResult

          list_multipart_uploads(prefix='', delimiter='', key_marker='', upload_id_marker='', max_uploads=1000)[source]

          罗列正在进行中的分片上传。支持分页。

        • prefix (str) – 只罗列匹配该前缀的文件的分片上传
        • delimiter (str) – 目录分割符
        • key_marker (str) – 文件名分页符。第一次调用可以不传,后续设为返回值中的 next_key_marker
        • upload_id_marker (str) – 分片ID分页符。第一次调用可以不传,后续设为返回值中的 next_upload_id_marker
        • max_uploads (int) – 一次罗列最多能够返回的条目数
        • Returns:

          ListMultipartUploadsResult

        • prefix (str) – 只罗列文件名为该前缀的文件
        • delimiter (str) – 分隔符。可以用来模拟目录
        • marker (str) – 分页标志。首次调用传空串,后续使用返回值的next_marker
        • max_keys (int) – 最多返回文件的个数,文件和目录的和不能超过该值
        • Returns:

          ListObjectsResult

          post_vod_playlist(channel_name, playlist_name, start_time=0, end_time=0)[source]

          根据指定的playlist name以及startTime和endTime生成一个点播的播放列表

          param str channel_name: 要生成点播列表的live channel的名称 param str playlist_name: 要生成点播列表m3u8文件的名称 param int start_time: 点播的起始时间,Unix Time格式,可以使用int(time.time())获取 param int end_time: 点播的结束时间,Unix Time格式,可以使用int(time.time())获取

          Parameters:permission (str) – 新的ACL,可以是oss2.BUCKET_ACL_PRIVATE、oss2.BUCKET_ACL_PUBLIC_READ或 oss2.BUCKET_ACL_PUBLIC_READ_WRITE put_live_channel_status(channel_name, status)[source]

          更改live channel的status,仅能在“enabled”和“disabled”两种状态中更改

          param str channel_name: 要更改status的live channel的名称 param str status: live channel的目标status

          用法 ::
          >>> bucket.put_object('readme.txt', 'content of readme.txt')
          >>> with open(u'local_file.txt', 'rb') as f:
          >>>     bucket.put_object('remote_file.txt', f)
          
        • key – 上传到OSS的文件名
        • data (bytes,str或file-like object) – 待上传的内容。
        • headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 用户指定的HTTP头部。可以指定Content-Type、Content-MD5、x-oss-meta-开头的头部等
        • progress_callback – 用户指定的进度回调函数。可以用来实现进度条等功能。参考 上传下载进度
        • Returns:

          PutObjectResult

          Parameters:
          • key (str) – 文件名
          • permission (str) – 可以是oss2.OBJECT_ACL_DEFAULT、oss2.OBJECT_ACL_PRIVATE、oss2.OBJECT_ACL_PUBLIC_READ或 oss2.OBJECT_ACL_PUBLIC_READ_WRITE。
          • Returns:

            RequestResult

            put_object_from_file(key, filename, headers=None, progress_callback=None)[source]

            上传一个本地文件到OSS的普通文件。

          • key (str) – 上传到OSS的文件名
          • filename (str) – 本地文件名,需要有可读权限
          • headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 用户指定的HTTP头部。可以指定Content-Type、Content-MD5、x-oss-meta-开头的头部等
          • progress_callback – 用户指定的进度回调函数。参考 上传下载进度
          • Returns:

            PutObjectResult

            restore an object

            如果是第一次针对该object调用接口,返回RequestResult.status = 202; 如果已经成功调用过restore接口,且服务端仍处于解冻中,抛异常RestoreAlreadyInProgress(status=409) 如果已经成功调用过restore接口,且服务端解冻已经完成,再次调用时返回RequestResult.status = 200,且会将object的可下载时间延长一天,最多延长7天。 如果object不存在,则抛异常NoSuchKey(status=404); 对非Archive类型的Object提交restore,则抛异常OperationNotSupported(status=400)

            也可以通过调用head_object接口来获取meta信息来判断是否可以restore与restore的状态 代码示例:: >>> meta = bucket.head_object(key) >>> if meta.resp.headers[‘x-oss-storage-class’] == oss2.BUCKET_STORAGE_CLASS_ARCHIVE: >>> bucket.restore_object(key) >>> while True: >>> meta = bucket.head_object(key) >>> if meta.resp.headers[‘x-oss-restore’] == ‘ongoing-request=”true”’: >>> time.sleep(5) >>> else: >>> break

          • channel_name – 直播频道的名称
          • expires – 过期时间(单位:秒),链接在当前时间再过expires秒后过期
          • playlist_name – 播放列表名称,注意与创建live channel时一致
          • params – 需要签名的HTTP查询参数
          • Returns:

            签名URL。

            sign_url(method, key, expires, headers=None, params=None)[source]

            生成签名URL。

            常见的用法是生成加签的URL以供授信用户下载,如为log.jpg生成一个5分钟后过期的下载链接:

            >>> bucket.sign_url('GET', 'log.jpg', 5 * 60)
            'http://your-bucket.oss-cn-hangzhou.aliyuncs.com/logo.jpg?OSSAccessKeyId=YourAccessKeyId\&Expires=1447178011&Signature=UJfeJgvcypWq6Q%2Bm3IJcSHbvSak%3D'
            
          • method (str) – HTTP方法,如’GET’、’PUT’、’DELETE’等
          • key – 文件名
          • expires – 过期时间(单位:秒),链接在当前时间再过expires秒后过期
          • headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 需要签名的HTTP头部,如名称以x-oss-meta-开头的头部(作为用户自定义元数据)、 Content-Type头部等。对于下载,不需要填。
          • params – 需要签名的HTTP查询参数
          • Returns:

            签名URL。

            update_object_meta(key, headers)[source]

            更改Object的元数据信息,包括Content-Type这类标准的HTTP头部,以及以x-oss-meta-开头的自定义元数据。

            用户可以通过 head_object() 获得元数据信息。

            upload_part(key, upload_id, part_number, data, progress_callback=None, headers=None)[source]

            上传一个分片。

            Parameters:
            • key (str) – 待上传文件名,这个文件名要和 init_multipart_upload() 的文件名一致。
            • upload_id (str) – 分片上传ID
            • part_number (int) – 分片号,最小值是1.
            • data – 待上传数据。
            • progress_callback – 用户指定进度回调函数。可以用来实现进度条等功能。参考 上传下载进度
            • headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 用户指定的HTTP头部。可以指定Content-MD5头部等
            • Returns:

              PutObjectResult

              upload_part_copy(source_bucket_name, source_key, byte_range, target_key, target_upload_id, target_part_number, headers=None)[source]

              分片拷贝。把一个已有文件的一部分或整体拷贝成目标文件的一个分片。

              class oss2.api.Service(auth, endpoint, session=None, connect_timeout=None, app_name='')[source]

              Bases: oss2.api._Base

              用于Service操作的类,如罗列用户所有的Bucket。

              >>> import oss2
              >>> auth = oss2.Auth('your-access-key-id', 'your-access-key-secret')
              >>> service = oss2.Service(auth, 'oss-cn-hangzhou.aliyuncs.com')
              >>> service.list_buckets()
              <oss2.models.ListBucketsResult object at 0x0299FAB0>
              Parameters:
              • auth (oss2.Auth) – 包含了用户认证信息的Auth对象
              • endpoint (str) – 访问域名,如杭州区域的域名为oss-cn-hangzhou.aliyuncs.com
              • session (oss2.Session) – 会话。如果是None表示新开会话,非None则复用传入的会话
              • connect_timeout (float) – 连接超时时间,以秒为单位。
              • app_name (str) – 应用名。该参数不为空,则在User Agent中加入其值。 注意到,最终这个字符串是要作为HTTP Header的值传输的,所以必须要遵循HTTP标准。
              • Parameters:
                • prefix (str) – 只罗列Bucket名为该前缀的Bucket,空串表示罗列所有的Bucket
                • marker (str) – 分页标志。首次调用传空串,后续使用返回值中的next_marker
                • max_keys (int) – 每次调用最多返回的Bucket数目
                • Returns:

                  罗列的结果

                  Return type:

                  oss2.models.ListBucketsResult

                  class oss2.auth.StsAuth(access_key_id, access_key_secret, security_token)[source]

                  Bases: object

                  用于STS临时凭证访问。可以通过官方STS客户端获得临时密钥(AccessKeyId、AccessKeySecret)以及临时安全令牌(SecurityToken)。

                  注意到临时凭证会在一段时间后过期,在此之前需要重新获取临时凭证,并更新 Bucketauth 成员变量为新 的 StsAuth 实例。

                  Parameters:
                  • access_key_id (str) – 临时AccessKeyId
                  • access_key_secret (str) – 临时AccessKeySecret
                  • security_token (str) – 临时安全令牌(SecurityToken)
                  • exception oss2.exceptions.AccessDenied(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = 'AccessDenied' exception oss2.exceptions.BucketNotEmpty(status, headers, body, details)[source]

                    Bases: oss2.exceptions.Conflict

                    code = 'BucketNotEmpty' exception oss2.exceptions.ChannelStillLive(status, headers, body, details)[source]

                    Bases: oss2.exceptions.Conflict

                    code = 'ChannelStillLive' exception oss2.exceptions.Conflict(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = '' exception oss2.exceptions.InvalidArgument(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = 'InvalidArgument' exception oss2.exceptions.InvalidDigest(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = 'InvalidDigest' exception oss2.exceptions.InvalidObjectName(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = 'InvalidObjectName' exception oss2.exceptions.InvalidRequest(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = 'InvalidRequest' exception oss2.exceptions.LiveChannelDisabled(status, headers, body, details)[source]

                    Bases: oss2.exceptions.Conflict

                    code = 'LiveChannelDisabled' exception oss2.exceptions.MalformedXml(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = 'MalformedXML' exception oss2.exceptions.NoSuchBucket(status, headers, body, details)[source]

                    Bases: oss2.exceptions.NotFound

                    code = 'NoSuchBucket' exception oss2.exceptions.NoSuchCors(status, headers, body, details)[source]

                    Bases: oss2.exceptions.NotFound

                    code = 'NoSuchCORSConfiguration' exception oss2.exceptions.NoSuchKey(status, headers, body, details)[source]

                    Bases: oss2.exceptions.NotFound

                    code = 'NoSuchKey' exception oss2.exceptions.NoSuchLifecycle(status, headers, body, details)[source]

                    Bases: oss2.exceptions.NotFound

                    code = 'NoSuchLifecycle' exception oss2.exceptions.NoSuchLiveChannel(status, headers, body, details)[source]

                    Bases: oss2.exceptions.NotFound

                    code = 'NoSuchLiveChannel' exception oss2.exceptions.NoSuchUpload(status, headers, body, details)[source]

                    Bases: oss2.exceptions.NotFound

                    code = 'NoSuchUpload' exception oss2.exceptions.NoSuchWebsite(status, headers, body, details)[source]

                    Bases: oss2.exceptions.NotFound

                    code = 'NoSuchWebsiteConfiguration' exception oss2.exceptions.NotFound(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = '' exception oss2.exceptions.NotModified(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = '' exception oss2.exceptions.ObjectNotAppendable(status, headers, body, details)[source]

                    Bases: oss2.exceptions.Conflict

                    code = 'ObjectNotAppendable' exception oss2.exceptions.OperationNotSupported(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = 'OperationNotSupported' exception oss2.exceptions.OssError(status, headers, body, details)[source]

                    Bases: exceptions.Exception

                    body = None

                    HTTP响应体(部分)

                    exception oss2.exceptions.PositionNotEqualToLength(status, headers, body, details)[source]

                    Bases: oss2.exceptions.Conflict

                    code = 'PositionNotEqualToLength' exception oss2.exceptions.PreconditionFailed(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = 'PreconditionFailed' exception oss2.exceptions.RestoreAlreadyInProgress(status, headers, body, details)[source]

                    Bases: oss2.exceptions.ServerError

                    code = 'RestoreAlreadyInProgress'

                    oss2.http

                    这个模块包含了HTTP Adapters。尽管OSS Python SDK内部使用requests库进行HTTP通信,但是对使用者是透明的。 该模块中的 SessionRequestResponse 对requests的对应的类做了简单的封装。

                    class oss2.http.Request(method, url, data=None, params=None, headers=None, app_name='')[source]

                    Bases: object

                    class oss2.iterators.BucketIterator(service, prefix='', marker='', max_keys=100, max_retries=None)[source]

                    Bases: oss2.iterators._BaseIterator

                    遍历用户Bucket的迭代器。

                    每次迭代返回的是 SimplifiedBucketInfo 对象。

                    class oss2.iterators.LiveChannelIterator(bucket, prefix='', marker='', max_keys=100, max_retries=None)[source]

                    Bases: oss2.iterators._BaseIterator

                    遍历Bucket里文件的迭代器。

                    每次迭代返回的是 LiveChannelInfo 对象。

                    class oss2.iterators.MultipartUploadIterator(bucket, prefix='', delimiter='', key_marker='', upload_id_marker='', max_uploads=1000, max_retries=None)[source]

                    Bases: oss2.iterators._BaseIterator

                    遍历Bucket里未完成的分片上传。

                    每次返回 MultipartUploadInfo 对象。 当 MultipartUploadInfo.is_prefix() 返回True时,表明是公共前缀(目录)。

                    class oss2.iterators.ObjectIterator(bucket, prefix='', delimiter='', marker='', max_keys=100, max_retries=None)[source]

                    Bases: oss2.iterators._BaseIterator

                    遍历Bucket里文件的迭代器。

                    每次迭代返回的是 SimplifiedObjectInfo 对象。 当 SimplifiedObjectInfo.is_prefix() 返回True时,表明是公共前缀(目录)。

                    class oss2.iterators.ObjectUploadIterator(bucket, key, max_uploads=1000, max_retries=None)[source]

                    Bases: oss2.iterators._BaseIterator

                    遍历一个Object所有未完成的分片上传。

                    每次返回 MultipartUploadInfo 对象。 当 MultipartUploadInfo.is_prefix() 返回True时,表明是公共前缀(目录)。

                    class oss2.iterators.PartIterator(bucket, key, upload_id, marker='0', max_parts=1000, max_retries=None)[source]

                    Bases: oss2.iterators._BaseIterator

                    遍历一个分片上传会话中已经上传的分片。

                    每次返回 PartInfo 对象。

                    class oss2.models.AbortMultipartUpload(days=None, created_before_date=None)[source]

                    Bases: object

                    删除parts

                    class oss2.models.AppendObjectResult(resp)[source]

                    Bases: oss2.models.RequestResult

                    crc = None

                    本次追加写完成后,OSS上文件的CRC64值

                    class oss2.models.BatchDeleteObjectsResult(resp)[source]

                    Bases: oss2.models.RequestResult

                    deleted_keys = None

                    已经删除的文件名列表

                    class oss2.models.BucketInfo(name=None, owner=None, location=None, storage_class=None, intranet_endpoint=None, extranet_endpoint=None, creation_date=None, acl=None)[source]

                    Bases: object

                    class oss2.models.BucketLogging(target_bucket, target_prefix)[source]

                    Bases: object

                    Bucket日志配置信息。

                    class oss2.models.BucketReferer(allow_empty_referer, referers)[source]

                    Bases: object

                    Bucket防盗链设置。

                    class oss2.models.BucketStat(storage_size_in_bytes, object_count, multi_part_upload_count)[source]

                    Bases: object

                    class oss2.models.CorsRule(allowed_origins=None, allowed_methods=None, allowed_headers=None, expose_headers=None, max_age_seconds=None)[source]

                    Bases: object

                    CORS(跨域资源共享)规则。

                    Parameters:
                    • allowed_origins (list of str) – 允许跨域访问的域。
                    • allowed_methods (list of str) – 允许跨域访问的HTTP方法,如’GET’等。
                    • allowed_headers (list of str) – 允许跨域访问的HTTP头部。
                    • class oss2.models.GetBucketAclResult(resp)[source]

                      Bases: oss2.models.RequestResult

                      acl = None

                      Bucket的ACL,其值可以是 BUCKET_ACL_PRIVATEBUCKET_ACL_PUBLIC_READ`或`BUCKET_ACL_PUBLIC_READ_WRITE

                      class oss2.models.GetBucketLocationResult( resp)[source]

                      Bases: oss2.models.RequestResult

                      location = None

                      Bucket所在的数据中心

                      class oss2.models.GetObjectAclResult(resp)[source]

                      Bases: oss2.models.RequestResult

                      acl = None

                      文件的ACL,其值可以是 OBJECT_ACL_DEFAULTOBJECT_ACL_PRIVATEOBJECT_ACL_PUBLIC_READ`或 `OBJECT_ACL_PUBLIC_READ_WRITE

                      class oss2.models.GetObjectMetaResult(resp)[source]

                      Bases: oss2.models.RequestResult

                      content_length = None

                      Content-Length,文件大小,类型为int。

                      class oss2.models.GetObjectResult(resp, progress_callback=None, crc_enabled=False)[source]

                      Bases: oss2.models.HeadObjectResult

                      client_crc class oss2.models.InitMultipartUploadResult(resp)[source]

                      Bases: oss2.models.RequestResult

                      upload_id = None

                      新生成的Upload ID

                      class oss2.models.LifecycleExpiration(days=None, date=None, created_before_date=None)[source]

                      Bases: object

                      过期删除操作。

                      Parameters:
                      • days – 表示在文件修改后过了这么多天,就会匹配规则,从而被删除
                      • date (datetime.date) – 表示在该日期之后,规则就一直生效。即每天都会对符合前缀的文件执行删除操作(如,删除),而不管文件是什么时候生成的。 不建议使用
                      • created_before_date – delete files if their last modified time earlier than created_before_date
                      • class oss2.models.LifecycleRule(id, prefix, status='Enabled', expiration=None, abort_multipart_upload=None, storage_transitions=None)[source]

                        Bases: object

                        生命周期规则。

                        class oss2.models.ListMultipartUploadsResult(resp)[source]

                        Bases: oss2.models.RequestResult

                        is_truncated = None

                        True表示还有更多的为完成分片上传可以罗列;False表示已经列举完毕。

                        class oss2.models.LiveChannelAudioStat(codec='', sample_rate=0, bandwidth=0)[source]

                        Bases: object

                        LiveStat中的Audio节点。

                        class oss2.models.LiveChannelInfo(status='enabled', description='', target=None, last_modified=None, name=None, play_url=None, publish_url=None)[source]

                        Bases: object

                        Live channel(直播频道)配置。

                        Parameters:
                        • status (str) – 直播频道的状态,合法的值为”enabled”和”disabled”。
                        • description (str) – 直播频道的描述信息,最长为128字节。
                        • target – 直播频道的推流目标节点,包含目标协议相关的参数。
                        • Parameters:
                          • last_modified (int, 参考 Unix Time。) – 直播频道的最后修改时间,这个字段仅在`ListLiveChannel`时使用。
                          • name (str) – 直播频道的名称。
                          • play_url (str) – 播放地址。
                          • publish_url (str) – 推流地址。
                          • class oss2.models.LiveChannelInfoTarget(type='HLS', frag_duration=5, frag_count=3, playlist_name='')[source]

                            Bases: object

                            Live channel中的Target节点,包含目标协议的一些参数。

                            class oss2.models.LiveChannelList(prefix='', marker='', max_keys=100, is_truncated=False, next_marker='')[source]

                            Bases: object

                            List直播频道的结果。

                          • prefix (str) – List直播频道使用的前缀。
                          • marker (str) – List直播频道使用的marker。
                          • max_keys (int) – List时返回的最多的直播频道的条数。
                          • is_truncated (bool) – 本次List是否列举完所有的直播频道
                          • next_marker – 下一次List直播频道使用的marker。
                          • channels (list,类型为 LiveChannelInfo) – List返回的直播频道列表
                          • class oss2.models.LiveChannelStat(status='', remote_addr='', connected_time='', video=None, audio=None)[source]

                            Bases: object

                            LiveStat结果。

                          • status – 直播状态。
                          • remote_addr (str) – 客户端的地址。
                          • connected_time (int, unix time) – 本次推流开始时间。
                          • video (class:LiveChannelVideoStat <oss2.models.LiveChannelVideoStat>) – 视频描述信息。
                          • audio (class:LiveChannelAudioStat <oss2.models.LiveChannelAudioStat>) – 音频描述信息。
                          • class oss2.models.LiveChannelVideoStat(width=0, height=0, frame_rate=0, codec='', bandwidth=0)[source]

                            Bases: object

                            LiveStat中的Video节点。

                            class oss2.models.LiveRecord(start_time='', end_time='', remote_addr='')[source]

                            Bases: object

                            直播频道中的推流记录信息

                            Parameters:
                            • start_time (int,参考 Unix Time。) – 本次推流开始时间。
                            • end_time (int, 参考 Unix Time。) – 本次推流结束时间。
                            • remote_addr (str) – 推流时客户端的地址。
                            • class oss2.models.MultipartUploadInfo(key, upload_id, initiation_date)[source]

                              Bases: object

                              initiation_date = None

                              分片上传初始化的时间,类型为int。参考 Unix Time

                              class oss2.models.PartInfo(part_number, etag, size=None, last_modified=None)[source]

                              Bases: object

                              表示分片信息的文件。

                              该文件既用于 list_parts 的输出,也用于 complete_multipart_upload 的输入。

                              class oss2.models.SimplifiedBucketInfo(name, location, creation_date)[source]

                              Bases: object

                              list_buckets 结果中的单个元素类型。

                              creation_date = None

                              Bucket的创建时间,类型为int。参考 Unix Time

                              class oss2.models.SimplifiedObjectInfo(key, last_modified, etag, type, size, storage_class)[source]

                              Bases: object

                              etag = None

                              HTTP ETag

                              class oss2.models.StorageTransition(days=None, created_before_date=None, storage_class=None)[source]

                              Bases: object

                              transit objects

                              Parameters:
                              • days – 将相对最后修改时间days天之后的Object转储
                              • created_before_date – 将最后修改时间早于created_before_date的对象转储
                              • storage_class – 对象转储到OSS的目标存储类型
                              • class oss2.resumable.ResumableDownloadStore(root=None, dir=None)[source]

                                Bases: oss2.resumable._ResumableStoreBase

                                保存断点下载断点信息的类。

                                每次下载的断点信息会保存在 root/dir/ 下面的某个文件里。

                                class oss2.resumable.ResumableStore(root=None, dir=None)[source]

                                Bases: oss2.resumable._ResumableStoreBase

                                保存断点上传断点信息的类。

                                每次上传的信息会保存在 root/dir/ 下面的某个文件里。

                                oss2.resumable.resumable_download(bucket, key, filename, multiget_threshold=None, part_size=None, progress_callback=None, num_threads=None, store=None)[source]

                                断点下载。

                                实现的方法是:
                              • 在本地创建一个临时文件,文件名由原始文件名加上一个随机的后缀组成;
                              • 通过指定请求的 Range 头按照范围并发读取OSS文件,并写入到临时文件里对应的位置;
                              • 全部完成之后,把临时文件重命名为目标文件 (即 filename
                              • 在上述过程中,断点信息,即已经完成的范围,会保存在磁盘上。因为某种原因下载中断,后续如果下载 同样的文件,也就是源文件和目标文件一样,就会先读取断点信息,然后只下载缺失的部分。

                                缺省设置下,断点信息保存在 HOME 目录的一个子目录下。可以通过 store 参数更改保存位置。

                                使用该函数应注意如下细节:
                              • 对同样的源文件、目标文件,避免多个程序(线程)同时调用该函数。因为断点信息会在磁盘上互相覆盖,或临时文件名会冲突。
                              • 避免使用太小的范围(分片),即 part_size 不宜过小,建议大于或等于 oss2.defaults.multiget_part_size
                              • 如果目标文件已经存在,那么该函数会覆盖此文件。
                              • key (str) – 待下载的远程文件名。
                              • filename (str) – 本地的目标文件名。
                              • multiget_threshold (int) – 文件长度大于该值时,则使用断点下载。
                              • part_size (int) – 指定期望的分片大小,即每个请求获得的字节数,实际的分片大小可能有所不同。
                              • progress_callback – 下载进度回调函数。参见 上传下载进度
                              • num_threads – 并发下载的线程数,如不指定则使用 oss2.defaults.multiget_num_threads
                              • store (ResumableDownloadStore) – 用来保存断点信息的持久存储,可以指定断点信息所在的目录。
                              • Raises:

                                如果OSS文件不存在,则抛出 NotFound ;也有可能抛出其他因下载文件而产生的异常。

                                oss2.resumable.resumable_upload(bucket, key, filename, store=None, headers=None, multipart_threshold=None, part_size=None, progress_callback=None, num_threads=None)[source]

                                断点上传本地文件。

                                实现中采用分片上传方式上传本地文件,缺省的并发数是 oss2.defaults.multipart_num_threads ,并且在 本地磁盘保存已经上传的分片信息。如果因为某种原因上传被中断,下次上传同样的文件,即源文件和目标文件路径都 一样,就只会上传缺失的分片。

                                缺省条件下,该函数会在用户 HOME 目录下保存断点续传的信息。当待上传的本地文件没有发生变化, 且目标文件名没有变化时,会根据本地保存的信息,从断点开始上传。

                              • key – 上传到用户空间的文件名
                              • filename – 待上传本地文件名
                              • store – 用来保存断点信息的持久存储,参见 ResumableStore 的接口。如不指定,则使用 ResumableStore
                              • headers – 传给 put_objectinit_multipart_upload 的HTTP头部
                              • multipart_threshold – 文件长度大于该值时,则用分片上传。
                              • part_size – 指定分片上传的每个分片的大小。如不指定,则自动计算。
                              • progress_callback – 上传进度回调函数。参见 上传下载进度
                              • num_threads – 并发上传的线程数,如不指定则使用 oss2.defaults.multipart_num_threads
                              • class oss2.utils.SizedFileAdapter(file_object, size)[source]

                                Bases: object

                                通过这个适配器(Adapter),可以把原先的 file_object 的长度限制到等于 size

                                len oss2.utils.copyfileobj_and_verify(fsrc, fdst, expected_len, chunk_size=16384, request_id='')[source]

                                copy data from file-like object fsrc to file-like object fdst, and verify length

                                oss2.utils.http_date(timeval=None)[source]

                                返回符合HTTP标准的GMT时间字符串,用strftime的格式表示就是”%a, %d %b %Y %H:%M:%S GMT”。 但不能使用strftime,因为strftime的结果是和locale相关的。

                                oss2.utils.http_to_unixtime(time_string)[source]

                                把HTTP Date格式的字符串转换为UNIX时间(自1970年1月1日UTC零点的秒数)。

                                HTTP Date形如 Sat, 05 Dec 2015 11:10:29 GMT

                                oss2.utils.make_progress_adapter(data, progress_callback, size=None)[source]
                                返回一个适配器,从而在读取 data ,即调用read或者对其进行迭代的时候,能够
                                调用进度回调函数。当 size 没有指定,且无法确定时,上传回调函数返回的总字节数为None。