追加上传

总结:

1、字符串长度 与 文件追加位置的关系

2、逐行追加优化为批量追加

# -*- coding: utf-8 -*-
import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')

# 设置首次上传的追加位置(Position参数)为0。
result = bucket.append_object('<yourObjectName>', 0, 'content of first append')
# 如果不是首次上传,可以通过bucket.head_object方法或上次追加返回值的next_position属性,得到追加位置。
bucket.append_object('<yourObjectName>', result.next_position, 'content of second append')


如果文件已经存在,如下两种情况将会抛出异常:

  • 不可追加文件,则抛出ObjectNotAppendable异常。
  • 可追加文件,但设置的追加位置和文件当前长度不等,则抛出PositionNotEqualToLength异常。

追加上传_上传文件_Python_SDK 参考_对象存储 OSS-阿里云 https://help.aliyun.com/document_detail/88432.html

(544, ':', 11781)
2019-01-07 17:39:38,325 oss2.api [INFO] 139865023629120 : Start to append object, bucket: g3-archive, key: log/yunmeng/birthplaceIp-test59.110.16.204/testvisit-2018-12-23, headers: {}, position: 11781
2019-01-07 17:39:38,370 oss2.api [INFO] 139865023629120 : Append object done, req_id: 5C331E5AF71FE3F768A13BD0, statu_code: 200
(313, ':', 12094)
2019-01-07 17:39:38,371 oss2.api [INFO] 139865023629120 : Start to append object, bucket: g3-archive, key: log/yunmeng/birthplaceIp-test59.110.16.204/testvisit-2018-12-23, headers: {}, position: 12094
2019-01-07 17:39:38,420 oss2.api [INFO] 139865023629120 : Append object done, req_id: 5C331E5AF71FE3F768A13C02, statu_code: 200
(301, ':', 12395)

result = bucket.append_object(objectName, 0, '')
print(result.next_position)
with open(i, 'r') as fr:
for line in fr:
result = bucket.append_object(objectName, result.next_position, line)
print(len(line), ':', result.next_position)



原文地址:https://www.cnblogs.com/rsapaper/p/10234639.html