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 True
stelleninclude_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:
Voeg de volgende importinstructies toe:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Voeg code toe om het programma uit te voeren met behulp van
asyncio.run
. Met deze functie wordt de doorgegeven coroutine uitgevoerd inmain()
ons voorbeeld en wordt deasyncio
gebeurtenislus beheerd. Coroutines worden gedeclareerd met de syntaxis async/await. In dit voorbeeld maakt demain()
coroutine eerst het hoogste niveauBlobServiceClient
met behulp vanasync with
en roept vervolgens de methode aan waarmee de containers worden vermeld. Houd er rekening mee dat alleen de client op het hoogste niveau moet worden gebruiktasync 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())
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 enasync for
wordt gebruikt bij het aanroepen van delist_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:
- Containers (REST API) vermelden
Codevoorbeelden
- Synchrone of asynchrone codevoorbeelden weergeven uit dit artikel (GitHub)