
# 上传对象-获取上传进度(Python SDK)
支持获取上传进度的接口包括：流式上传、文件上传、上传段、追加上传和断点续传上传。
本示例用于通过设置回调函数来获取上传对象的进度。
示例代码如下：
```
import os
import traceback
from obs import ObsClient
# 推荐通过环境变量获取AK/SK，这里也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险
# 您可以登录访问管理控制台获取访问密钥AK/SK，获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
ak = os.getenv("AccessKeyID")
sk = os.getenv("SecretAccessKey")
# 如需使用临时AK/SK和SecurityToken访问OBS，则同样推荐通过环境变量获取
# security_token = os.getenv("SecurityToken")
# server填写Bucket对应的Endpoint，这里以华北-北京四为例，其他地区请按实际情况填写
server = "https://obs.cn-north-4.myhuaweicloud.com"
# 创建obsClient实例
# 如果使用临时AK/SK和SecurityToken访问OBS，需要在创建实例时通过security_token参数指定securityToken值
obs_client = ObsClient(access_key_id=ak, secret_access_key=sk, server=server) 
# 获取上传对象的进度 
def callback(transferredAmount, totalAmount, totalSeconds): 
    # 获取上传平均速率(KB/S) 
    print(transferredAmount * 1.0 / totalSeconds / 1024) 
    # 获取上传进度百分比 
    print(transferredAmount * 100.0 / totalAmount) 
try: 
    bucket_name = "examplebucket" 
    # 对象名，即上传后的文件名 
    object_key = "objectname" 
    # 待上传文件的完整路径，如aa/bb.txt 
    file_path = 'localfile' 
    # 文件上传 
    resp = obs_client.putFile(bucket_name, object_key, file_path, progressCallback=callback) 
    # 返回码为2xx时，接口调用成功，否则接口调用失败 
    if resp.status < 300: 
        print('Put File Succeeded') 
        print('requestId:', resp.requestId) 
        print('etag:', resp.body.etag) 
        print('versionId:', resp.body.versionId) 
        print('storageClass:', resp.body.storageClass) 
    else: 
        print('Put File Failed') 
        print('requestId:', resp.requestId) 
        print('errorCode:', resp.errorCode) 
        print('errorMessage:', resp.errorMessage) 
except Exception: 
    print('Put File Failed') 
    print(traceback.format_exc())
```
