news 2026/6/13 22:01:49

Python之osc-sdk-python包语法、参数和实际应用案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python之osc-sdk-python包语法、参数和实际应用案例

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 全场景能力,核心功能如下:

  1. 桶(Bucket)管理:创建/删除/查询桶、设置桶区域/权限/存储类型
  2. 对象(Object)管理:文件上传/下载/删除/复制/移动/列举文件
  3. 高级功能:分片上传/断点续传、预签名URL、生命周期规则、跨域配置、防盗链
  4. 权限控制:IAM 权限、桶策略、对象 ACL 权限管理
  5. 数据安全:服务端加密、客户端加密、文件MD5校验
  6. 批量操作:批量上传/下载/删除文件
  7. 监控与日志:桶访问日志配置、存储用量查询

二、安装方法

1. 标准安装(推荐)

# 安装最新稳定版pipinstallosc-sdk-python# 指定版本安装(兼容老项目)pipinstallosc-sdk-python==3.2.0

2. 离线安装

  1. 下载源码:https://github.com/huaweicloud/huaweicloud-sdk-python-obs
  2. 解压后执行:
python setup.pyinstall

3. 验证安装

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华为云SKXXXXXXXXXXXXXXXX
serverOBS终端节点(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 错误、无操作权限、终端节点错误
解决

  1. 核对 AK/SK 是否正确
  2. 确认账号有 OBS 权限
  3. 核对server终端节点与桶区域一致

错误2:BucketAlreadyExists桶已存在

原因:OBS 桶名全局唯一,被他人占用
解决:修改桶名,使用唯一名称

错误3:NoSuchBucket桶不存在

原因:桶名拼写错误、桶已删除、区域不匹配
解决:核对桶名 + 终端节点区域

错误4:文件上传超时

原因:网络慢、文件过大、超时时间太短
解决

  1. 使用分片上传
  2. 调大timeout参数
  3. 开启断点续传

错误5:SignatureDoesNotMatch签名错误

原因:系统时间不准确、AK/SK 错误
解决:校准本地时间,重新配置密钥


六、使用注意事项

  1. 密钥安全

    • 不要将 AK/SK 硬编码在代码中提交到 Git
    • 推荐使用环境变量、配置文件、IAM 委托获取密钥
  2. 桶命名规范

    • 长度 3~63 字符
    • 只能小写字母、数字、短横线
    • 不能以短横线开头/结尾,不能连续短横线
  3. 文件路径规范

    • OBS 没有真实目录,/只是逻辑分隔符
    • 文件名不要包含特殊字符(\:*"等)
  4. 大文件操作

    • 100MB 文件必须用upload_file分片上传

    • 开启enable_checkpoint=True断点续传
  5. 并发与性能

    • 不要频繁创建/销毁客户端,全局复用一个ObsClient
    • 批量操作优先使用官方批量接口,提升效率
  6. 区域一致性

    • 终端节点(Endpoint)必须与桶所在区域一致
    • 不同区域 OBS 不互通

总结

  1. osc-sdk-python是华为云 OBS 官方 Python SDK,支持全功能操作
  2. 核心流程:初始化客户端 → 调用接口 → 校验结果
  3. 8个案例覆盖:创建桶、上传/下载、分片上传、列举文件、预签名URL、批量删除、生命周期
  4. 常见错误多为:密钥错误、权限不足、区域不匹配、桶名重复
  5. 核心注意事项:密钥安全、大文件分片上传、全局复用客户端

《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 22:00:51

开源音乐自由革命:LX Music桌面版如何重塑你的听觉体验

开源音乐自由革命&#xff1a;LX Music桌面版如何重塑你的听觉体验 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 你是否曾为寻找一首心仪的歌曲而辗转于多个音乐平台&#xff1…

作者头像 李华
网站建设 2026/6/13 21:59:54

StreamCap终极指南:如何构建40+平台直播录制工具的完整技术架构

StreamCap终极指南&#xff1a;如何构建40平台直播录制工具的完整技术架构 【免费下载链接】StreamCap Multi-Platform Live Stream Automatic Recording Tool | 多平台直播流自动录制客户端 基于FFmpeg 支持监控/定时/转码 项目地址: https://gitcode.com/gh_mirrors/st/S…

作者头像 李华
网站建设 2026/6/13 21:55:54

MuleSoft+LLM企业级AI编排实战:从协议适配到生产落地

1. 项目概述&#xff1a;当企业级集成平台遇上大语言模型&#xff0c;不是叠加&#xff0c;而是重定义“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题里藏着一个正在发生的、静默却剧烈的范式迁移。它说的不是“用LLM写…

作者头像 李华
网站建设 2026/6/13 21:54:12

Java毕业设计-基于 SpringBoot 的民间应急救援救助管理系统设计 民间公益救援队救助调度系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/13 21:54:11

高效解决Markdown文件阅读难题:markdownReader的5个实战应用方案

高效解决Markdown文件阅读难题&#xff1a;markdownReader的5个实战应用方案 【免费下载链接】markdownReader markdownReader is a extention for chrome, used for reading markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownReader 你是否曾在Chr…

作者头像 李华
网站建设 2026/6/13 21:54:09

003、开关电源的主要性能指标

开关电源的主要性能指标 从一块冒烟的板子说起 去年夏天&#xff0c;客户退回一批电源模块&#xff0c;故障现象统一&#xff1a;上电后MOS管炸裂&#xff0c;PCB铜箔直接烧断。拆开一看&#xff0c;输入电压标称12V&#xff0c;实际测试时客户接入了24V。设计时输入范围写的是…

作者头像 李华