2

我正在使用 python 库来查询 Google Cloud Storage,并且我正在使用命名层次结构在 Storage 中组织信息。例如:

my_bucket/simulations/version_1/data...
my_bucket/simulations/version_2/data...
my_bucket/simulations/version_3/data...
my_bucket/other_data/more_data...

我的问题是:是否可以查询使用list_blobs或其他方法来检索仅包含“模拟”目录中的版本的列表,而不是模拟下面的所有 blob?

作为参考,这会以分页方式返回所有 blob:

cursor = bucket.list_blobs(prefix='simulations')
4

1 回答 1

2

我玩过方法的prefixdelimiter参数,list_blobs这段代码有效:

from google.cloud import storage

def ls(bucket_name, prefix, delimiter):

    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)

    cursor = bucket.list_blobs(prefix=prefix, delimiter=delimiter)
    for blob in cursor:
        pass

    for prefix in cursor.prefixes:
        print prefix

ls(your_bucket_name, 'simulations/', '/')

输出:

simulations/version-1/
simulations/version-2/
simulations/version-3/

请注意,这只会显示目录内的simulations/目录名称,文件将被省略。

于 2018-03-13T14:33:58.270 回答