Как бы я перебрал все имена файлов в подкаталоге в Google Cloud Storage с python?

Скажем, у меня есть некоторый сегмент / подкаталог в Google Cloud Storage, и адрес этого сегмента:

gs://test-monkeys-example/training_data/cats

В этом подкаталоге кошек у меня есть куча изображений кошек, все из которых являются jpgs. Как мне в python перебрать подкаталог cats и распечатать все имена файлов в нем?

Что-то вроде:

for x in directory('gs://test-monkeys-example/training_data/cats'):
    print(x)

Очевидно, что каталог ('gs://test-monkeys-example/training_data/cats') - это не то, как это сделать, а просто psuedocode, как мне это сделать?!

2 ответа

Решение

Используйте модуль хранения:

import google.datalab.storage as storage
cats = [o.key for o in storage.Bucket('test-monkeys-example').objects()
  if o.key.startswith('training_data/cats')]

Это дает вам список таких кошек.

В качестве альтернативы, вы можете использовать Objects учебный класс:

cats = [o.key for o in storage.Objects('test-monkeys-example', '', '')
  if o.key.startswith('training_data/cats')]

Если вам не нужен список, помещенный в переменную, вы можете использовать %gcs магия, проще

%gcs list -o gs://test-monkeys-example/training_data/cats/*

Это печатает HTML-таблицу ключей. Обратите внимание, что это полный путь GCS, начиная с gs://,

Облачное хранилище Google поддерживает перечисление только тех объектов, которые начинаются с определенного префикса. Вы можете получить к нему доступ из клиентской библиотеки следующим образом:

from google.cloud import storage

client = storage.Client()
bucket = client.bucket('mybucket')
for blob in bucket.list_blobs(prefix='training_data/cats'):
  print blob.name
Другие вопросы по тегам