Можно ли запросить Google Cloud Storage аналогично команде `ls` в терминале?

Я использую библиотеку 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 или какой-то другой метод для получения списка, который содержит только версии из каталога "simulation", а не все BLOB-объекты ниже симуляций?

Для справки, это возвращает все BLOB-объекты в виде страниц:

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

1 ответ

Решение

Я играл с prefix а также delimiter параметры 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/ каталог, файлы будут опущены.

Другие вопросы по тегам