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

时间:2019-12-30 05:47:33

标签: python google-cloud-platform google-cloud-storage

我从

开始
    client = storage.Client()
    bucket = client.get_bucket(BUCKET_NAME)

    <what's next? Need something like client.list_folders(path)>

我知道该怎么做

  1. 使用bucket.list_blobs()

  2. 列出所有blob(包括子子文件夹中任何深度的blob)
  3. 或如何使用bucket.list_blobs(prefix=<path to subfolder>)

  4. 递归列出给定文件夹中的所有blob

但是如果我的文件系统结构具有100个顶级文件夹,每个文件夹都有数千个文件,该怎么办?有什么有效的方法只获取那些100顶级文件夹名称而不列出所有内部blob?

2 个答案:

答案 0 :(得分:1)

您可以使用带分隔符的列表来获取顶级前缀。请参阅list_blobs文档:

  

定界符(str)–(可选)定界符,与前缀一起使用以模拟   层次结构。

类似这样的东西:

from google.cloud import storage
storage_client = storage.Client()
storage_client.list_blobs(BUCKET_NAME, delimiter='/')

答案 1 :(得分:0)

我认为如果不列出所有内部Blob,就无法获得 100个顶级文件夹。 Google Cloud Storage没有文件夹或子目录,该库只是对层次结构文件树的一种错觉。

我使用了以下简单代码:

from google.cloud import storage
storage_client = storage.Client()
blobs = storage_client.list_blobs('my-project')
res = []

for blob in blobs:
   if blob.name.split('/')[0] not in res:
       res.append(blob.name.split('/')[0]) 

print(res)