Auflisten von Blobcontainern mit Python
Wenn Sie die Container in einem Azure Storage-Konto über Code auflisten, können Sie verschiedene Optionen angeben, um zu steuern, wie die Ergebnisse von Azure Storage zurückgegeben werden. In diesem Artikel wird beschrieben, wie Container mithilfe der Azure Storage-Clientbibliothek für Python aufgelistet werden.
Informationen zum Auflisten von Blobcontainern mithilfe asynchroner APIs finden Sie unter Asynchrones Auflisten von Containern.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Azure Storage-Konto – Erstellen eines Speicherkontos
- Ab Python 3.8
Erstellen Ihrer Umgebung
Wenn Sie kein vorhandenes Projekt haben, wird in diesem Abschnitt gezeigt, wie Sie ein Projekt für die Arbeit mit der Azure Blob Storage-Clientbibliothek für Python einrichten. Weitere Details finden Sie unter Erste Schritte mit Azure Blob Storage und Python.
Um die Codebeispiele in diesem Artikel zu verwenden, führen Sie die folgenden Schritte zum Einrichten Ihres Projekts aus.
Installieren von Paketen
Installieren Sie die folgenden Pakete mittels pip install
:
pip install azure-storage-blob azure-identity
Hinzufügen von Importanweisungen
Fügen Sie die folgenden import
-Anweisungen ein:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorisierung
Der Autorisierungsmechanismus muss über die erforderlichen Berechtigungen zum Auflisten von Blobcontainern verfügen. Für die Autorisierung mit Microsoft Entra ID (empfohlen) benötigen Sie mindestens die integrierte Azure RBAC-Rolle Mitwirkender an Storage-Blobdaten. Weitere Informationen finden Sie im Autorisierungsleitfaden für List Containers (REST API).
Erstellen eines Clientobjekts
Um eine App mit Blob Storage zu verbinden, erstellen Sie eine Instanz von BlobServiceClient. Das folgende Beispiel zeigt, wie Sie ein Clientobjekt mithilfe von DefaultAzureCredential
für die Autorisierung erstellen:
# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()
# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)
Sie können auch Clientobjekte für bestimmte Container oder Blobs erstellen, entweder direkt oder aus dem BlobServiceClient
-Objekt. Weitere Informationen zum Erstellen und Verwalten von Clientobjekten finden Sie unter Erstellen und Verwalten von Clientobjekten, die mit Datenressourcen interagieren.
Zu Containerauflistungsoptionen
Wenn Sie Container über Ihren Code auflisten, können Sie Optionen angeben, um zu steuern, wie Ergebnisse von Azure Storage zurückgegeben werden. Sie können die Anzahl der Ergebnisse festlegen, die in den einzelnen Ergebnissätzen zurückgegeben werden sollen, und dann die nachfolgenden Sätze abrufen. Sie können die Ergebnisse auch nach einem Präfix filtern und Containermetadaten mit den Ergebnissen zurückgeben. Diese Optionen sind in den folgenden Abschnitten beschrieben.
Rufen Sie zum Auflisten von Containern in einem Speicherkonto die folgende Methode auf:
Diese Methode gibt einen wiederholbaren Wert vom Typ ContainerPropertieszurück. Container werden lexikalisch nach Namen sortiert.
Festlegen der Anzahl der zurückgegebenen Ergebnisse
Standardmäßig werden durch einen einzelnen Auflistungsvorgang bis zu 5.000 Ergebnisse zurückgegeben. Um einen kleineren Satz von Ergebnissen zurückzugeben, geben Sie einen Wert ungleich Null für das results_per_page
Schlüsselwortargument an.
Filtern von Ergebnissen mit einem Präfix
Geben Sie zum Filtern der Liste von Containern eine Zeichenfolge oder ein Zeichen für dasname_starts_with
Schlüsselwortargument an. Die Präfixzeichenfolge kann ein oder mehrere Zeichen enthalten. Azure Storage gibt dann nur die Container zurück, deren Namen mit diesem Präfix beginnen.
Containermetadaten einschließen
Um Containermetadaten in die Ergebnisse einzuschließen, legen Sie das include_metadata
Schlüsselwortargument auf True
fest. Da Azure Storage für jeden zurückgegebenen Container Metadaten enthält, müssen Sie diese nicht zusätzlich abrufen.
Einschließen gelöschter Container
Um vorläufig gelöschte Container in den Ergebnissen einzuschließen, legen Sie das include_deleted
Schlüsselwortargument auf True
fest.
Codebeispiele
Im folgenden Beispiel werden alle Container und Metadaten aufgelistet. Sie können Containermetadaten einbeziehen, indem Sie include_metadata
auf True
festlegen:
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'])
Im folgenden Beispiel werden nur Container aufgelistet, die mit einem im Parameter name_starts_with
angegebenen Präfix beginnen:
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'])
Sie können auch ein Limit für die Anzahl der Ergebnisse pro Seite angeben. In diesem Beispiel werden die Ergebnisse in results_per_page
übergeben und paginiert:
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'])
Asynchrones Auflisten von Containern
Die Azure Blob Storage-Clientbibliothek für Python unterstützt das asynchrone Auflisten von Containern. Weitere Informationen zu den Projekteinrichtungsanforderungen finden Sie unter Asynchrone Programmierung.
Führen Sie die folgenden Schritte aus, um Container mithilfe asynchroner APIs aufzulisten:
Fügen Sie die folgenden import-Anweisungen hinzu:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Fügen Sie Code hinzu, um das Programm mithilfe von
asyncio.run
auszuführen. Diese Funktion führt die übergebene Coroutine aus,main()
in unserem Beispiel, und verwaltet die Ereignisschleife vonasyncio
. Coroutinen werden mit der async/await-Syntax deklariert. In diesem Beispiel erstellt die Coroutinemain()
zunächst denBlobServiceClient
auf oberster Ebene mitasync with
und ruft dann die Methode auf, die die Container auflistet. Beachten Sie, dass nur der Client auf oberster Ebeneasync with
verwenden muss, da andere von ihm erstellte Clients denselben Verbindungspool aufweisen.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())
Fügen Sie Code hinzu, um die Container aufzulisten. Der Code ist identisch mit dem synchronen Beispiel, mit der Ausnahme, dass die Methode mit dem Schlüsselwort
async
deklariert wird und dassasync for
beim Aufrufen derlist_containers
-Methode verwendet wird.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'])
Mit dieser grundlegenden Einrichtung können Sie weitere Beispiele in diesem Artikel als Coroutinen mit async/await-Syntax implementieren.
Ressourcen
Weitere Informationen zum Auflisten von Containern mithilfe der Azure Blob Storage-Clientbibliothek für Python finden Sie in den folgenden Ressourcen.
Codebeispiele
- Anzeigen synchroner oder asynchroner Codebeispiele aus diesem Artikel (GitHub)
REST-API-Vorgänge
Das Azure SDK für Python enthält Bibliotheken, die auf der Azure-REST-API basieren, und ermöglicht Ihnen so die Interaktion mit REST-API-Vorgängen über vertraute Python-Paradigmen. Die Clientbibliotheksmethoden zum Auflisten von Containern verwenden den folgenden REST-API-Vorgang:
- List Containers (REST-API)
Ressourcen zur Clientbibliothek
Weitere Informationen
Zugehöriger Inhalt
- Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für Python. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfadenartikel unter Erstellen Ihrer Python-App.