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

如何在Azure Python SDK中列出名称以a-z开头的Blob?

问题:筛选名称以a-z字母开头的Azure Blob

我目前用以下代码列出Blob容器中的所有Blob:

blobs = container_client.list_blobs()

但我希望只列出名称以a到z中任意字母开头的Blob。我知道name_starts_with参数,但它只能指定单个字母,比如:

blobs_with_a = container_client.list_blobs(name_starts_with='a')

请问能不能指定字母范围来筛选Blob名称开头,而不是单个字符?

解决方案

Azure Blob Storage的list_blobs方法本身不支持直接通过字符范围(比如a-z)来筛选,name_starts_with仅接受前缀字符串,无法传入正则或范围表达式。你可以通过两种方式实现需求:

方法1:本地过滤所有Blob

先获取容器内所有Blob,再在本地筛选出名称以小写字母a-z开头的项。这种方式实现简单,适合Blob数量不多的场景:

# 获取所有Blob
all_blobs = container_client.list_blobs()
# 筛选名称以a-z开头的Blob
filtered_blobs = [blob for blob in all_blobs if blob.name and blob.name[0].islower()]

如果需要区分大小写(比如只匹配小写a-z,排除大写A-Z),上面的代码刚好适用;如果要包含大写,把islower()换成isalpha()即可。

方法2:分批次请求单个字母前缀

如果容器内Blob数量极大,本地过滤会占用较多带宽和内存,可以循环请求每个小写字母前缀的Blob,再合并结果:

import string

filtered_blobs = []
# 遍历a-z所有小写字母
for char in string.ascii_lowercase:
    # 请求当前字母开头的Blob
    blobs = container_client.list_blobs(name_starts_with=char)
    filtered_blobs.extend(blobs)

这种方式会发送26次API请求,但每次返回的结果都是目标范围内的Blob,能减少不必要的数据传输。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:27:12