Dela via


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:

  1. Lägg till följande importinstruktioner:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. Lägg till kod för att köra programmet med .asyncio.run Den här funktionen kör den skickade coroutinen main() i vårt exempel och hanterar händelseloopen asyncio . Coroutines deklareras med syntaxen async/await. I det här exemplet main() skapar coroutine först den översta nivån BlobServiceClient med och async withanropar sedan metoden som visar containrarna. Observera att endast klienten på den översta nivån behöver använda async 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())
    
  3. Lägg till kod för att lista containrarna. Koden är samma som det synkrona exemplet, förutom att metoden deklareras med nyckelordet async och async for används när metoden anropas 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'])
    

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:

Kodexempel

Klientbiblioteksresurser

Se även