Lista blobcontainrar med Python
När du listar containrarna i ett Azure Storage-konto från koden kan du ange flera alternativ för att hantera hur resultatet returneras från Azure Storage. Den här artikeln visar hur du listar containrar med hjälp av Azure Storage-klientbiblioteket för Python.
Mer information om hur du listar blobcontainrar med asynkrona API:er finns i Lista containrar asynkront.
Förutsättningar
- Den här artikeln förutsätter att du redan har ett projekt konfigurerat för att fungera med Azure Blob Storage-klientbiblioteket för Python. Mer information om hur du konfigurerar projektet, inklusive paketinstallation, tillägg
import
av instruktioner och skapande av ett auktoriserat klientobjekt finns i Komma igång med Azure Blob Storage och Python. - Auktoriseringsmekanismen måste ha behörighet att lista blobcontainrar. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärd:
Om alternativ för containerlistning
När du listar containrar från koden kan du ange alternativ för att hantera hur resultatet returneras från Azure Storage. Du kan ange hur många resultat som ska returneras i varje resultatuppsättning och sedan hämta efterföljande uppsättningar. Du kan också filtrera resultatet efter ett prefix och returnera containermetadata med resultatet. De här alternativen beskrivs i följande avsnitt.
Om du vill visa containrar i ett lagringskonto anropar du följande metod:
Den här metoden returnerar en iterbar typ av ContainerProperties. Containrar beställs lexicographically efter namn.
Hantera hur många resultat som returneras
Som standard returnerar en listningsåtgärd upp till 5 000 resultat åt gången. Om du vill returnera en mindre uppsättning resultat anger du ett icke-nollvärde för nyckelordsargumentet results_per_page
.
Filtrera resultat med ett prefix
Om du vill filtrera listan med containrar anger du en sträng eller ett tecken för nyckelordsargumentet name_starts_with
. Prefixsträngen kan innehålla ett eller flera tecken. Azure Storage returnerar sedan endast de containrar vars namn börjar med prefixet.
Inkludera containermetadata
Om du vill inkludera containermetadata med resultatet anger du nyckelordsargumentet include_metadata
till True
. Azure Storage innehåller metadata för varje container som returneras, så du behöver inte hämta containermetadata separat.
Inkludera borttagna containrar
Om du vill inkludera mjukt borttagna containrar med resultatet anger du nyckelordsargumentet include_deleted
till True
.
Kodexempel
I följande exempel visas alla containrar och metadata. Du kan inkludera containermetadata genom att ange include_metadata
till 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'])
I följande exempel visas endast containrar som börjar med ett prefix som anges i parametern 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'])
Du kan också ange en gräns för antalet resultat per sida. Det här exemplet skickar in results_per_page
och paginates resultaten:
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'])
Visa en lista över containrar asynkront
Azure Blob Storage-klientbiblioteket för Python har stöd för att visa containrar asynkront. Mer information om krav för projektkonfiguration finns i Asynkron programmering.
Följ dessa steg för att visa containrar med asynkrona API:er:
Lägg till följande importinstruktioner:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Lägg till kod för att köra programmet med .
asyncio.run
Den här funktionen kör den skickade coroutinenmain()
i vårt exempel och hanterar händelseloopenasyncio
. Coroutines deklareras med syntaxen async/await. I det här exempletmain()
skapar coroutine först den översta nivånBlobServiceClient
med ochasync with
anropar sedan metoden som visar containrarna. Observera att endast klienten på den översta nivån behöver användaasync with
, eftersom andra klienter som skapats från den delar samma anslutningspool.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())
Lägg till kod för att lista containrarna. Koden är samma som det synkrona exemplet, förutom att metoden deklareras med nyckelordet
async
ochasync for
används när metoden anropaslist_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'])
Med den här grundläggande konfigurationen på plats kan du implementera andra exempel i den här artikeln som coroutines med hjälp av async/await-syntax.
Resurser
Mer information om hur du listar containrar med hjälp av Azure Blob Storage-klientbiblioteket för Python finns i följande resurser.
REST API-åtgärder
Azure SDK för Python innehåller bibliotek som bygger på Azure REST API så att du kan interagera med REST API-åtgärder via välbekanta Python-paradigm. Klientbiblioteksmetoderna för att visa containrar använder följande REST API-åtgärd:
- Listcontainrar (REST API)
Kodexempel
Klientbiblioteksresurser
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för