
【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载本指南基于 Context Hub 仓库中的 Azure Blob Storage Python SDK 文档content/azure/docs/storage-blob/python/DOC.md面向需要对接 Azure 对象存储的 Python 开发者系统讲解azure-storage-blob12.28.0 的安装、四种认证方式、三层客户端模型以及上传、下载、列出的完整可运行示例并深入剖析 12.28.0 版本特有的行为差异Azurite 连接串简写、start_from、decompress、默认块大小变更等。阅读完本文你将能独立完成从认证配置到生产级传输调优的 Azure Blob 集成。版本前提与 Golden Rule本文档对应的 SDK 版本为azure-storage-blob12.28.0。使用该版本时有一个必须遵守的「黄金法则」Blob 操作一律使用azure-storage-blob并在真实 Azure 环境中配合azure-identity的DefaultAzureCredential进行认证。依据包概览与 PyPI 元数据12.28.0 要求Python 3.9注意部分 Microsoft Learn 旧文章仍写 Python 3.8属于过期信息应以包元数据为准。该文档属于 Context Hub 的维护者source: maintainer来源内容语言标记为 python、版本 12.28.0、修订号 1更新于 2026-03-12其 frontmatter 格式遵循 内容指南 中定义的 DOC.md 规范。安装固定版本安装推荐避免行为漂移python -m pip install azure-storage-blob12.28.0 azure-identity如需异步用法额外安装异步传输层如aiohttppython -m pip install azure-storage-blob12.28.0 azure-identity aiohttp常用环境变量export AZURE_STORAGE_ACCOUNT_URLhttps://account.blob.core.windows.net export AZURE_STORAGE_CONTAINERdocuments当你在本地开发 Azurite 或使用连接字符串认证时用AZURE_STORAGE_CONTAINER之外还要注意连接字符串认证场景下应使用AZURE_STORAGE_CONNECTION_STRING替代AZURE_STORAGE_ACCOUNT_URL。认证与初始化首选Microsoft Entra ID DefaultAzureCredential这是官方推荐的 Azure 托管应用与常规本地开发路径。本地配置三步走安装azure-identity通过az login或其他受支持的开发者凭据源登录为主体验证主体授予存储账户或容器上的 Azure RBAC 权限。角色指引只读流程列出、下载等需要Storage Blob Data Reader或更高权限读写流程上传、创建、删除等需要Storage Blob Data Contributor或更高权限。RBAC 分配可能需要几分钟传播。如果新建的角色分配立即失败稍作等待重试即可无需重写认证流程。import os from azure.identity import DefaultAzureCredential from azure.storage.blob import BlobServiceClient account_url os.environ[AZURE_STORAGE_ACCOUNT_URL] credential DefaultAzureCredential() service BlobServiceClient(account_urlaccount_url, credentialcredential)连接字符串或 Azurite连接字符串在本地存储模拟器、迁移工具以及已持有存储密钥的环境中仍然实用import os from azure.storage.blob import BlobServiceClient service BlobServiceClient.from_connection_string( os.environ[AZURE_STORAGE_CONNECTION_STRING] )12.28.0 新增的 Azurite 简写from_connection_string()现在直接接受UseDevelopmentStoragetrue;service BlobServiceClient.from_connection_string(UseDevelopmentStoragetrue;)SAS 令牌或账户密钥SDK 同样支持 SAS 令牌与账户密钥认证。在确有需要时使用它们但应用代码应优先选择 Entra ID以避免在代码中嵌入长期有效的存储密钥。客户端模型三层结构SDK 围绕三个客户端层组织BlobServiceClient账户级作用域ContainerClient单个容器BlobClient单个 Blob。典型获取流程container service.get_container_client(documents) blob container.get_blob_client(reports/hello.txt)注意SDK 不会自动创建缺失的容器在调用上传或下载前必须先创建容器。这一设计在 registry.js 中对应的是文档路径按entry → language → version → path逐层解析的思路——客户端层级同样需要逐层获取任何一层缺失都会导致后续操作失败。核心用法基础同步流程完整可运行示例import os from azure.core.exceptions import ResourceExistsError from azure.identity import DefaultAzureCredential from azure.storage.blob import BlobServiceClient account_url os.environ[AZURE_STORAGE_ACCOUNT_URL] container_name os.getenv(AZURE_STORAGE_CONTAINER, documents) service BlobServiceClient(account_urlaccount_url, credentialDefaultAzureCredential()) container service.get_container_client(container_name) try: container.create_container() except ResourceExistsError: pass blob container.get_blob_client(reports/hello.txt) blob.upload_blob(bhello from azure-storage-blob\n, overwriteTrue) text blob.download_blob(encodingUTF-8).readall() print(text) for item in container.list_blobs(name_starts_withreports/): print(item.name, item.size)上传upload_blob()会根据对象大小与传输设置自动选择单请求上传或基于块的block-based上传from azure.storage.blob import ContentSettings with open(report.json, rb) as data: blob.upload_blob( data, overwriteTrue, tags{kind: report}, content_settingsContentSettings(content_typeapplication/json), )实用上传要点overwriteTrue通常是幂等应用代码的必需项standard_blob_tier可为块 Blob 设置Hot、Cool、Cold或Archive访问层手动分块暂存请使用stage_block()配合commit_block_list()。下载download_blob()返回StorageStreamDownloader。小负载用readall()写文件用readinto()流式处理用chunks()download_stream blob.download_blob(max_concurrency4) with open(report.bin, wb) as fh: download_stream.readinto(fh)分块处理stream blob.download_blob() for chunk in stream.chunks(): process(chunk)列出扁平列出for item in container.list_blobs(name_starts_withreports/2026/): print(item.name)带虚拟目录的层级列出from azure.storage.blob import BlobPrefix for item in container.walk_blobs(name_starts_withreports/, delimiter/): if isinstance(item, BlobPrefix): print(dir, item.name) else: print(blob, item.name)需要理解的关键事实Blob Storage 本质上是扁平的类文件夹行为来自 Blob 命名加分隔符delimiter。另外Blob 快照snapshots无法通过层级列出方式列出。列出过滤务必使用name_starts_with关键字——这是当前文档与示例使用的标准关键字。异步模式使用azure.storage.blob.aio下的异步客户端且凭据与客户端都需要显式关闭。顶层服务客户端通常用async with管理子客户端共享其连接池import os from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient async def main() - None: account_url os.environ[AZURE_STORAGE_ACCOUNT_URL] async with DefaultAzureCredential() as credential: async with BlobServiceClient(account_url, credentialcredential) as service: container service.get_container_client(documents) async for item in container.list_blobs(name_starts_withreports/): print(item.name)生产环境配置要点以下设置在官方概览与任务指南中被重点提及值得在生产中关注配置类别相关参数作用重试策略retry_total、retry_connect、retry_read、retry_status、retry_to_secondary控制不同失败场景下的重试次数与是否故障转移至副本超时connection_timeout、read_timeout控制建连与读超时日志logging_enableTrue输出请求诊断信息上传调优max_block_size、max_single_put_size、per-callmax_concurrency决定分块大小与并发下载调优max_chunk_get_size、max_single_get_size、per-callmax_concurrency决定获取块大小与并发默认值是合理起点除非你针对特定工作负载有证据表明需要调整传输或重试行为否则先使用默认配置。常见陷阱清单部分 Microsoft Learn 任务文章仍标注 Python3.8但 12.28.0 的包概览与 PyPI 元数据要求Python 3.9请以包元数据为准较老的概览片段仍提到 Python3.5的异步支持该描述对当前稳定版已过时upload_blob()不保护并发写入者微软明确文档化客户端库不支持对同一 Blob 的并发写入容器必须存在否则上传/下载示例会失败列出过滤使用name_starts_with关键字DefaultAzureCredential失败通常是环境问题未登录、租户错误或 RBAC 传播延迟调试日志可能包含请求与响应体生产环境不要随意开启。12.28.0 版本敏感行为12.28.0是12.28.0b1功能集的稳定发布版ContainerClient.list_blobs()、list_blob_names()、walk_blobs()在 12.28.0 功能线中新增了start_from关键字BlobClient.download_blob()在 12.28.0 功能线中新增了decompress关键字BlobServiceClient.from_connection_string()现在接受UseDevelopmentStoragetrue;用于 Azurite默认connection_data_block_size从4 KiB 改为 256 KiB官方 changelog 指出这应能提升许多大文件下载的吞吐。在 Context Hub 中获取与使用本文档本文档以 DOC.md 形式存放于仓库的 content/azure/docs/storage-blob/python/ 目录其 frontmattername: storage-blob、languages: python、versions: 12.28.0符合 内容指南 中 DOC.md 的字段规范——name构成条目 IDazure/storage-blobversions记录的是 PyPI 包版本revision与updated-on提供内容新鲜度信号。当你的编码 Agent 需要最新、准确的 Blob 存储 API 信息时可以按 get-api-docs 技能 的指引通过 Context Hub CLI 获取而不是依赖可能过时的训练数据chub search azure blob storage --json # 找到最佳匹配 id例如 azure/storage-blob chub get azure/storage-blob --lang py # 获取本文档对应语言的 DOC.md获取后可先用--lang指定语言、--version 12.28.0锁定版本若未指定版本CLI 默认取recommendedVersion见 registry.js 的版本回退逻辑。使用过程中若发现文档未覆盖的坑点可用chub annotate保存本地笔记对文档质量有意见可用chub feedback反馈完整命令参考见 CLI 参考文档。官方资料本文档内容基于以下官方来源整理仓库内文档引用的外部参考资料Microsoft Learn 包概览、API 根、快速入门、上传/下载/列出手册PyPI 包页面以及 Azure SDK changelog。编写代码时若遇到版本相关疑问优先核对 changelog 与包元数据。赞分享【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载相关推荐kOps 中 Azure Blob Storage Go 客户端模块azblob完全指南认证、上传下载与源码级实战kOps 中 Azure Blob Storage Go 客户端模块azblob完全指南认证、上传下载与源码级实战 导读 本篇技术指南以 kOps 仓库所云原生集群管理运维IaCContext Hub 技术文档精读Azure Blob Storage JavaScript 客户端azure/storage-blob 12.31.0认证、上传、下载与列表演练Context Hub 技术文档精读Azure Blob Storage JavaScript 客户端azure/storage blob 12.31.0在 distribution 中驾驭 Azure Blob StorageGo azblob SDK 的认证、客户端模型与实战在 distribution 中驾驭 Azure Blob StorageGo azblob SDK 的认证、客户端模型与实战 本文以当前仓库 vendor镜像仓库后端存储云原生上一篇终极指南如何使用Supermemory构建个人第二大脑—从安装到高级应用全解析下一篇SuperMemory项目在Product Hunt登顶的技术复盘与产品优化策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考