Как составить список всех BLOB-объектов внутри определенного подкаталога в облачном хранилище Azure с помощью Python? - PullRequest
0 голосов
/ 03 июля 2018

Я работал с примером кода из документов Azure https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python

from azure.storage.blob import BlockBlobService
account_name = "x"
account_key = "x"
top_level_container_name = "top_container"

blob_service = BlockBlobService(account_name, account_key)

print("\nList blobs in the container")
generator = blob_service.list_blobs(top_level_container_name)
for blob in generator:
    print("\t Blob name: " + blob.name)

Теперь я хотел бы знать, как получить более мелкую зернистость при ходьбе в контейнере. Мой контейнер top_level_container_name содержит несколько подкаталогов

  • top_level_container_name / dir1
  • top_level_container_name / dir2
  • и т. Д. В этом шаблоне

Я бы хотел иметь возможность перечислить все BLOB-объекты, которые находятся только в одном из этих каталогов. Например

  • dir1 / a.jpg
  • dir1 / b.jpg

Как мне получить генератор только содержимого dir1 без необходимости обходить все остальные dir? (Я бы тоже взял список или словарь)

Я попытался добавить / dir1 к имени top_level_container_name, чтобы оно было top_level_container_name = "top_container/dir1", но это не сработало. Я получаю обратно код ошибки azure.common.AzureHttpError: The requested URI does not represent any resource on the server. ErrorCode: InvalidUri

Документы, похоже, даже не имеют никакой информации о BlockBlobService.list_blobs () https://docs.microsoft.com/en-us/python/api/azure.storage.blob.blockblobservice.blockblobservice?view=azure-python

Обновление: list_blobs () происходит от https://github.com/Azure/azure-storage-python/blob/ff51954d1b9d11cd7ecd19143c1c0652ef1239cb/azure-storage-blob/azure/storage/blob/baseblobservice.py#L1202

1 Ответ

0 голосов
/ 03 июля 2018

Пожалуйста, попробуйте что-то вроде:

generator = blob_service.list_blobs(top_level_container_name, prefix="dir1/")

Это должно перечислять BLOB-объекты и папки в dir1 виртуальном каталоге.

Если вы хотите перечислить все BLOB-объекты внутри dir1 виртуального каталога, попробуйте что-то вроде:

generator = blob_service.list_blobs(top_level_container_name, prefix="dir1/", delimiter="")

Для получения дополнительной информации, пожалуйста, смотрите это link.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...