Вывод списка контейнеров BLOB-объектов с помощью Python
При перечислении контейнеров в учетной записи служба хранилища Azure из кода можно указать несколько вариантов управления возвратом результатов из служба хранилища Azure. В этой статье показано, как перечислить контейнеры с помощью клиентской библиотеки служба хранилища Azure для Python.
Сведения о перечислении контейнеров БОЛЬШИХ двоичных объектов с помощью асинхронных API см. в статье "Список контейнеров" асинхронно.
Необходимые компоненты
- В этой статье предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Python. Сведения о настройке проекта, включая установку пакета, добавление
import
инструкций и создание авторизованного клиентского объекта, см. в статье "Начало работы с Хранилище BLOB-объектов Azure и Python". - Механизм авторизации должен иметь разрешения для перечисления контейнеров BLOB-объектов. Дополнительные сведения см. в руководстве по авторизации для следующей операции REST API:
Сведения о параметрах перечисления контейнеров
При перечислении контейнеров из кода можно указать параметры для управления возвратом результатов из служба хранилища Azure. Можно указать число возвращаемых результатов в каждом наборе результатов, а затем извлечь последующие наборы. Вы также можете фильтровать результаты по префиксу и возвращать метаданные контейнера с результатами. Описание этих параметров приводится в следующих разделах.
Чтобы перечислить контейнеры в учетной записи хранения, вызовите следующий метод:
Этот метод возвращает итератор типа ContainerProperties. Контейнеры упорядочены лексографически по имени.
Управление количеством возвращаемых результатов
По умолчанию операция перечисления возвращает до 5000 результатов за раз. Чтобы вернуть меньший набор результатов, укажите ненулевое значение для results_per_page
аргумента ключевое слово.
Фильтрация результатов с помощью префикса
Чтобы отфильтровать список контейнеров, укажите строку или символ для аргумента name_starts_with
ключевое слово. Строка префикса может содержать один или несколько символов. Служба хранилища Azure возвращает только те контейнеры, имена которых начинаются с этого префикса.
Включение метаданных контейнера
Чтобы включить метаданные контейнера с результатами, задайте для аргумента include_metadata
True
ключевое слово значение . служба хранилища Azure включает метаданные с каждым возвращенным контейнером, поэтому вам не нужно отдельно получить метаданные контейнера.
Включение удаленных контейнеров
Чтобы включить обратимо удаленные контейнеры с результатами, задайте для аргумента include_deleted
ключевое слово значение True
.
Примеры кода
В следующем примере перечислены все контейнеры и метаданные. Можно включить метаданные контейнера, задав значение include_metadata
True
:
def list_containers(self, blob_service_client: BlobServiceClient):
containers = blob_service_client.list_containers(include_metadata=True)
for container in containers:
print(container['name'], container['metadata'])
В следующем примере перечислены только контейнеры, начинающиеся с префикса, указанного в параметре name_starts_with
:
def list_containers_prefix(self, blob_service_client: BlobServiceClient):
containers = blob_service_client.list_containers(name_starts_with='test-')
for container in containers:
print(container['name'])
Можно также указать ограничение количества результатов на страницу. В этом примере результаты передаются results_per_page
и разбиения на страницы:
def list_containers_pages(self, blob_service_client: BlobServiceClient):
i=0
all_pages = blob_service_client.list_containers(results_per_page=5).by_page()
for container_page in all_pages:
i += 1
print(f"Page {i}")
for container in container_page:
print(container['name'])
Асинхронное перечисление контейнеров
Клиентская библиотека Хранилище BLOB-объектов Azure для Python поддерживает асинхронное перечисление контейнеров. Дополнительные сведения о требованиях к настройке проекта см. в статье асинхронное программирование.
Выполните следующие действия, чтобы перечислить контейнеры с помощью асинхронных API:
Добавьте в файл следующие операторы импорта:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Добавьте код для запуска программы с помощью
asyncio.run
. Эта функция запускает переданную корутину вmain()
нашем примере и управляет цикломasyncio
событий. Корутины объявляются с синтаксисом async/await. В этом примереmain()
корутин сначала создает верхний уровеньBlobServiceClient
с помощьюasync with
, а затем вызывает метод, который перечисляет контейнеры. Обратите внимание, что использовать только клиент верхнего уровня, так как другие клиенты, созданные из него, используютasync with
тот же пул подключений.async def main(): sample = ContainerSamples() # TODO: Replace <storage-account-name> with your actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: await sample.list_containers(blob_service_client) if __name__ == '__main__': asyncio.run(main())
Добавьте код для перечисления контейнеров. Код совпадает с синхронным примером, за исключением того, что метод объявляется с
async
ключевое слово иasync for
используется при вызовеlist_containers
метода.async def list_containers(self, blob_service_client: BlobServiceClient): async for container in blob_service_client.list_containers(include_metadata=True): print(container['name'], container['metadata'])
С помощью этой базовой настройки вы можете реализовать другие примеры в этой статье в качестве корутин с помощью синтаксиса async/await.
Ресурсы
Дополнительные сведения о перечислении контейнеров с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Python см. в следующих ресурсах.
Операции REST API
Пакет SDK Azure для Python содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API с помощью знакомых парадигм Python. Методы клиентской библиотеки для перечисления контейнеров используют следующую операцию REST API:
- Список контейнеров (REST API)
Примеры кода
- Просмотр примеров синхронного или асинхронного кода из этой статьи (GitHub)
Ресурсы клиентской библиотеки
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по