Delen via


Blobcontainers weergeven met Python

Wanneer u de containers in een Azure Storage-account uit uw code weergeeft, kunt u verschillende opties opgeven om te beheren hoe resultaten worden geretourneerd vanuit Azure Storage. In dit artikel wordt beschreven hoe u containers weergeeft met behulp van de Azure Storage-clientbibliotheek voor Python.

Zie Asynchroon lijst met containers voor blobcontainers met behulp van asynchrone API's.

Vereisten

  • In dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld voor gebruik met de Azure Blob Storage-clientbibliotheek voor Python. Zie Aan de slag met Azure Blob Storage en Python voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het toevoegen import van instructies en het maken van een geautoriseerd clientobject.
  • Het autorisatiemechanisme moet machtigingen hebben om blobcontainers weer te geven. Zie de autorisatierichtlijnen voor de volgende REST API-bewerking voor meer informatie:

Over opties voor containervermelding

Wanneer u containers uit uw code opgeeft, kunt u opties opgeven om te beheren hoe resultaten worden geretourneerd vanuit Azure Storage. U kunt het aantal resultaten opgeven dat moet worden geretourneerd in elke set resultaten en vervolgens de volgende sets ophalen. U kunt de resultaten ook filteren op een voorvoegsel en containermetagegevens retourneren met de resultaten. Deze opties worden beschreven in de volgende secties.

Als u containers in een opslagaccount wilt weergeven, roept u de volgende methode aan:

Deze methode retourneert een iterable van het type ContainerProperties. Containers worden lexicografisch gesorteerd op naam.

Beheren hoeveel resultaten worden geretourneerd

Standaard retourneert een vermeldingsbewerking maximaal 5000 resultaten tegelijk. Als u een kleinere set resultaten wilt retourneren, geeft u een niet-nulwaarde op voor het results_per_page trefwoordargument.

Resultaten filteren met een voorvoegsel

Als u de lijst met containers wilt filteren, geeft u een tekenreeks of teken op voor het name_starts_with trefwoordargument. De tekenreeks voor het voorvoegsel kan een of meer tekens bevatten. Azure Storage retourneert vervolgens alleen de containers waarvan de namen beginnen met dat voorvoegsel.

Containermetagegevens opnemen

Als u containermetagegevens wilt opnemen met de resultaten, stelt u het include_metadata trefwoordargument in op True. Azure Storage bevat metagegevens voor elke container die wordt geretourneerd, zodat u de containermetagegevens niet afzonderlijk hoeft op te halen.

Verwijderde containers opnemen

Als u voorlopig verwijderde containers wilt opnemen met de resultaten, stelt u het include_deleted trefwoordargument in op True.

Codevoorbeelden

In het volgende voorbeeld ziet u alle containers en metagegevens. U kunt containermetagegevens opnemen door het volgende in te Truestelleninclude_metadata:

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'])

In het volgende voorbeeld ziet u alleen containers die beginnen met een voorvoegsel dat is opgegeven in de name_starts_with parameter:

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'])

U kunt ook een limiet opgeven voor het aantal resultaten per pagina. In dit voorbeeld worden de resultaten doorgegeven results_per_page en gepagineerd:

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'])

Containers asynchroon weergeven

De Azure Blob Storage-clientbibliotheek voor Python biedt ondersteuning voor het asynchroon weergeven van containers. Zie Asynchrone programmering voor meer informatie over de vereisten voor het instellen van projecten.

Volg deze stappen om containers weer te geven met behulp van asynchrone API's:

  1. Voeg de volgende importinstructies toe:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. Voeg code toe om het programma uit te voeren met behulp van asyncio.run. Met deze functie wordt de doorgegeven coroutine uitgevoerd in main() ons voorbeeld en wordt de asyncio gebeurtenislus beheerd. Coroutines worden gedeclareerd met de syntaxis async/await. In dit voorbeeld maakt de main() coroutine eerst het hoogste niveau BlobServiceClient met behulp van async withen roept vervolgens de methode aan waarmee de containers worden vermeld. Houd er rekening mee dat alleen de client op het hoogste niveau moet worden gebruikt async with, omdat andere clients die ermee zijn gemaakt, dezelfde verbindingsgroep delen.

    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. Voeg code toe om de containers weer te geven. De code is hetzelfde als het synchrone voorbeeld, behalve dat de methode wordt gedeclareerd met het async trefwoord en async for wordt gebruikt bij het aanroepen van de list_containers methode.

    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'])
    

Met deze basisinstallatie kunt u andere voorbeelden in dit artikel implementeren als coroutines met behulp van async/await syntaxis.

Resources

Zie de volgende resources voor meer informatie over het weergeven van containers met behulp van de Azure Blob Storage-clientbibliotheek voor Python.

REST API-bewerkingen

De Azure SDK voor Python bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende Python-paradigma's. De clientbibliotheekmethoden voor het weergeven van containers gebruiken de volgende REST API-bewerking:

Codevoorbeelden

  • Synchrone of asynchrone codevoorbeelden weergeven uit dit artikel (GitHub)

Clientbibliotheekbronnen

Zie ook