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