我从
开始 client = storage.Client()
bucket = client.get_bucket(BUCKET_NAME)
<what's next? Need something like client.list_folders(path)>
我知道该怎么做
使用bucket.list_blobs()
或如何使用bucket.list_blobs(prefix=<path to subfolder>)
但是如果我的文件系统结构具有100
个顶级文件夹,每个文件夹都有数千个文件,该怎么办?有什么有效的方法只获取那些100
顶级文件夹名称而不列出所有内部blob?
答案 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)