osc-sdk-python 完整使用指南
osc-sdk-python是华为云对象存储服务(OBS)官方提供的 Python SDK 工具包,用于在 Python 代码中对接华为云 OBS,实现文件上传、下载、删除、桶管理、权限控制、生命周期等全功能操作,是华为云 OBS 最主流的 Python 开发工具。
注意:
osc-sdk-python是华为云 OBS 官方 SDK,兼容 Python 2.7 / 3.6+,支持同步/异步操作,稳定性和兼容性拉满。
一、核心功能
osc-sdk-python 覆盖华为云 OBS 全场景能力,核心功能如下:
- 桶(Bucket)管理:创建/删除/查询桶、设置桶区域/权限/存储类型
- 对象(Object)管理:文件上传/下载/删除/复制/移动/列举文件
- 高级功能:分片上传/断点续传、预签名URL、生命周期规则、跨域配置、防盗链
- 权限控制:IAM 权限、桶策略、对象 ACL 权限管理
- 数据安全:服务端加密、客户端加密、文件MD5校验
- 批量操作:批量上传/下载/删除文件
- 监控与日志:桶访问日志配置、存储用量查询
二、安装方法
1. 标准安装(推荐)
# 安装最新稳定版pipinstallosc-sdk-python# 指定版本安装(兼容老项目)pipinstallosc-sdk-python==3.2.02. 离线安装
- 下载源码:https://github.com/huaweicloud/huaweicloud-sdk-python-obs
- 解压后执行:
python setup.pyinstall3. 验证安装
importobsprint(obs.__version__)# 输出版本号即安装成功三、核心语法与基础参数
1. 初始化客户端(核心步骤)
所有操作都需要先创建 OBS 客户端,必须配置华为云密钥、区域。
importobs# 初始化客户端obs_client=obs.ObsClient(access_key_id="你的华为云AK",# 必传:华为云访问密钥AKsecret_access_key="你的华为云SK",# 必传:华为云访问密钥SKserver="obs.cn-north-4.myhuaweicloud.com",# 必传:OBS终端节点(Endpoint)ssl_verify=False,# 可选:是否校验SSL证书(默认False)max_retry_count=3,# 可选:最大重试次数timeout=60# 可选:请求超时时间(秒))关键参数说明
| 参数 | 含义 | 必选 | 示例 |
|---|---|---|---|
| access_key_id | 华为云AK(在IAM控制台获取) | 是 | XXXXXXXXXXXXXXXX |
| secret_access_key | 华为云SK | 是 | XXXXXXXXXXXXXXXX |
| server | OBS终端节点(Endpoint) | 是 | obs.cn-north-4.myhuaweicloud.com |
| ssl_verify | 是否开启SSL验证 | 否 | False |
| max_retry_count | 网络失败重试次数 | 否 | 3 |
| timeout | 接口超时时间 | 否 | 60 |
2. 通用返回结果
所有接口返回ObsClient.get_error_code()、ObsClient.get_error_msg(),用于判断执行结果:
resp=obs_client.方法名()ifresp.status<300:print("操作成功")else:print(f"失败:{resp.error_code},{resp.error_message}")四、8个实际应用案例(可直接运行)
案例1:创建 OBS 桶
importobs# 初始化客户端client=obs.ObsClient(access_key_id="你的AK",secret_access_key="你的SK",server="obs.cn-north-4.myhuaweicloud.com")# 创建桶(桶名全局唯一,只能小写字母、数字、短横线)bucket_name="test-bucket-2025-demo"resp=client.create_bucket(bucket_name)# 校验结果ifresp.status==200:print(f"桶{bucket_name}创建成功")else:print(f"创建失败:{resp.error_code}")案例2:上传本地文件到 OBS(简单上传)
# 本地文件路径local_file="test.txt"# OBS中保存的文件名obs_file="upload/test.txt"# 桶名bucket_name="test-bucket-2025-demo"# 上传文件resp=client.put_file(bucket_name=bucket_name,object_key=obs_file,file_path=local_file)ifresp.status<300:print("文件上传成功")案例3:分片上传大文件(支持断点续传)
适合**>100MB**的大文件,避免上传失败:
# 分片上传(自动分片,默认5MB/片)resp=client.upload_file(bucket_name=bucket_name,object_key="big_file.zip",file_path="D:/big_file.zip",part_size=5*1024*1024,# 分片大小5MBenable_checkpoint=True# 开启断点续传)ifresp.status<300:print("大文件分片上传成功")案例4:下载 OBS 文件到本地
# 下载文件resp=client.get_file(bucket_name=bucket_name,object_key="upload/test.txt",file_path="download_test.txt"# 本地保存路径)ifresp.status<300:print("文件下载成功")案例5:列举桶内所有文件
# 列举文件(最多列举1000个)resp=client.list_objects(bucket_name)ifresp.status<300:print("桶内文件:")forcontentinresp.body.contents:print(f"文件名:{content.key},大小:{content.size}字节")案例6:生成文件下载预签名URL(无需AK/SK访问)
适合给第三方临时访问文件,有效期自定义:
# 生成有效期1小时的下载链接url=client.create_pre_signed_url(bucket_name=bucket_name,object_key="upload/test.txt",expiry=3600# 有效期1小时(秒))print("临时下载链接:",url)案例7:删除单个文件 + 批量删除文件
# 1. 删除单个文件client.delete_object(bucket_name,"upload/test.txt")# 2. 批量删除文件objects=[{"key":"file1.txt"},{"key":"file2.jpg"}]resp=client.delete_objects(bucket_name,objects)print("批量删除成功")案例8:设置桶生命周期规则(自动删除过期文件)
# 配置30天后自动删除文件rule=obs.LifecycleRule(id="delete_rule",prefix="upload/",# 只对upload/目录下文件生效status="Enabled",expiration=obs.LifecycleExpiration(days=30))client.set_bucket_lifecycle(bucket_name,[rule])print("生命周期规则设置成功")五、常见错误及解决方案
错误1:AccessDenied权限拒绝
原因:AK/SK 错误、无操作权限、终端节点错误
解决:
- 核对 AK/SK 是否正确
- 确认账号有 OBS 权限
- 核对
server终端节点与桶区域一致
错误2:BucketAlreadyExists桶已存在
原因:OBS 桶名全局唯一,被他人占用
解决:修改桶名,使用唯一名称
错误3:NoSuchBucket桶不存在
原因:桶名拼写错误、桶已删除、区域不匹配
解决:核对桶名 + 终端节点区域
错误4:文件上传超时
原因:网络慢、文件过大、超时时间太短
解决:
- 使用分片上传
- 调大
timeout参数 - 开启断点续传
错误5:SignatureDoesNotMatch签名错误
原因:系统时间不准确、AK/SK 错误
解决:校准本地时间,重新配置密钥
六、使用注意事项
密钥安全
- 不要将 AK/SK 硬编码在代码中提交到 Git
- 推荐使用环境变量、配置文件、IAM 委托获取密钥
桶命名规范
- 长度 3~63 字符
- 只能小写字母、数字、短横线
- 不能以短横线开头/结尾,不能连续短横线
文件路径规范
- OBS 没有真实目录,
/只是逻辑分隔符 - 文件名不要包含特殊字符(
\:*"等)
- OBS 没有真实目录,
大文件操作
100MB 文件必须用
upload_file分片上传- 开启
enable_checkpoint=True断点续传
并发与性能
- 不要频繁创建/销毁客户端,全局复用一个
ObsClient - 批量操作优先使用官方批量接口,提升效率
- 不要频繁创建/销毁客户端,全局复用一个
区域一致性
- 终端节点(Endpoint)必须与桶所在区域一致
- 不同区域 OBS 不互通
总结
osc-sdk-python是华为云 OBS 官方 Python SDK,支持全功能操作- 核心流程:初始化客户端 → 调用接口 → 校验结果
- 8个案例覆盖:创建桶、上传/下载、分片上传、列举文件、预签名URL、批量删除、生命周期
- 常见错误多为:密钥错误、权限不足、区域不匹配、桶名重复
- 核心注意事项:密钥安全、大文件分片上传、全局复用客户端
《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。