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

如何高效列出GCS存储桶中的所有顶级文件夹?

高效获取GCS存储桶的顶级文件夹名称

好问题!Google Cloud Storage(GCS)里并没有传统文件系统那样的“实体文件夹”——所谓的文件夹本质是Blob路径的前缀。不过你完全可以用一个高效的方式只获取顶级文件夹,不用遍历所有子文件,正好适配你有100个顶级文件夹、每个下有数千文件的场景。

核心技巧:利用delimiter参数

当你调用bucket.list_blobs()时,加上delimiter='/'参数,GCS会返回**前缀(prefixes)**而非所有Blob。这些前缀就是你要的文件夹路径,而且只会返回当前层级的直接子文件夹,不会递归遍历下层内容。

具体代码实现

基于你已经初始化好的client和bucket,直接用这段代码:

# 获取存储桶的所有顶级文件夹
blobs_iterator = bucket.list_blobs(delimiter='/')

# 提取顶级文件夹名称(去掉末尾的斜杠)
top_level_folders = []
for prefix in blobs_iterator.prefixes:
    # 移除路径末尾的斜杠,得到干净的文件夹名
    folder_name = prefix.rstrip('/')
    top_level_folders.append(folder_name)

# 打印结果
print("顶级文件夹列表:", top_level_folders)

为什么这很高效?

  • 这个方法不会遍历每个顶级文件夹下的数千个Blob,GCS服务端会直接帮你过滤出层级前缀,返回的结果只包含你需要的100个顶级文件夹信息,性能开销极低。
  • 如果之后你需要获取某一级子文件夹(比如folder_a/下的直接子文件夹),只需要修改prefix参数即可:
    # 获取folder_a下的直接子文件夹
    sub_blobs = bucket.list_blobs(prefix='folder_a/', delimiter='/')
    sub_folders = [p.rstrip('/') for p in sub_blobs.prefixes]
    

这样就完美解决了你的需求,不用浪费资源去遍历所有子文件啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:03:42