You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure容器无法列出全部Blob文件问题求助(初学者)

问题:Azure Blob容器部分文件无法通过Python SDK列出,但存储资源管理器可见

我是一名初学者,之前用Python SDK的代码能正常列出Azure Blob容器里的文件,但现在部分文件列不出来。这些文件在Azure存储资源管理器里能正常查看和下载,代码执行既不报错也没日志,在公司服务器和Colab里测试结果一致。

使用的代码:

name_starts_with_download = "/zip/2022"
# 创建BlobServiceClient对象,用于生成容器客户端
blob_service_client = BlobServiceClient.from_connection_string(connect_str)
# 获取容器客户端
container_client = blob_service_client.get_container_client(container_download)
blob_list = container_client.list_blobs(name_starts_with = name_starts_with_download)
for blob in blob_list:
  print(blob.name)

容器内有三个格式、属性相近的文件,仅名称、标签和大小不同,其中20220804可正常显示,20220805和20220806无法被列出。


排查方案与解决办法

1. 验证Blob名称前缀匹配

list_blobs的name_starts_with参数是精确匹配Blob名称起始字符串,你需要确认无法列出的Blob完整名称是否真的以/zip/2022开头:

  • 打开Azure存储资源管理器,查看20220805和20220806的完整Blob名称,比如是否是zip/20220805(开头无斜杠),这种情况下你的前缀/zip/2022就会匹配失败。

2. 调整前缀格式

尝试去掉前缀开头的斜杠,因为Blob名称通常不会以斜杠开头:

name_starts_with_download = "zip/2022"

3. 检查Blob类型并调整查询参数

默认list_blobs只返回块Blob,如果无法列出的文件是页Blob或追加Blob,需要显式指定包含类型:

blob_list = container_client.list_blobs(
    name_starts_with=name_starts_with_download,
    include=['page_blob', 'append_blob']
)

4. 确认连接字符串权限

虽然存储资源管理器能访问,但仍需确认代码中使用的连接字符串对应的账号拥有Blob数据读取权限。可以直接复制存储资源管理器里的连接字符串替换代码中的connect_str,重新测试。

5. 强制遍历所有分页结果

如果存在分页返回的情况(尽管你只有3个文件,概率较低),可以通过by_page()强制遍历所有结果:

blob_list = container_client.list_blobs(name_starts_with=name_starts_with_download)
for page in blob_list.by_page():
    for blob in page:
        print(blob.name)

内容的提问来源于stack exchange,提问作者Larissa Kelmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:45:33