Výpis kontejnerů objektů blob pomocí Pythonu
Když vypíšete kontejnery v účtu Azure Storage z kódu, můžete zadat několik možností pro správu způsobu vrácení výsledků ze služby Azure Storage. Tento článek ukazuje, jak vypsat kontejnery pomocí klientské knihovny azure Storage pro Python.
Další informace o výpisu kontejnerů objektů blob pomocí asynchronních rozhraní API najdete v tématu Asynchronní výpis kontejnerů.
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Python 3.8 nebo novější
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro Python. Další podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a Pythonem.
Pokud chcete pracovat s příklady kódu v tomto článku, nastavte projekt pomocí následujícího postupu.
Instalace balíčků
Nainstalujte následující balíčky pomocí pip install
:
pip install azure-storage-blob azure-identity
Přidání příkazů importu
Přidejte následující příkazy import
:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorizace
Autorizační mechanismus musí mít potřebná oprávnění k výpisu kontejnerů objektů blob. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete předdefinovanou roli Přispěvatel dat objektů blob služby Azure RBAC nebo vyšší. Další informace najdete v pokynech k autorizaci pro seznam kontejnerů (REST API).
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient. Následující příklad ukazuje, jak vytvořit objekt klienta pro DefaultAzureCredential
autorizaci:
# 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)
Můžete také vytvořit klientské objekty pro konkrétní kontejnery nebo objekty blob, a to buď přímo, nebo z objektu BlobServiceClient
. Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.
O možnostech výpisu kontejnerů
Při výpisu kontejnerů z kódu můžete zadat možnosti pro správu způsobu vrácení výsledků ze služby Azure Storage. Můžete zadat počet výsledků, které se mají vrátit v každé sadě výsledků, a pak načíst následující sady. Výsledky můžete také filtrovat podle předpony a vrátit metadata kontejneru s výsledky. Tyto možnosti jsou popsány v následujících částech.
Pokud chcete vypsat kontejnery v účtu úložiště, zavolejte následující metodu:
Tato metoda vrátí iterable typu ContainerProperties. Kontejnery jsou seřazené lexicicky podle názvu.
Správa počtu vrácených výsledků
Ve výchozím nastavení vrátí operace výpisu najednou až 5 000 výsledků. Pokud chcete vrátit menší sadu výsledků, zadejte nenulovou hodnotu argumentu klíčového results_per_page
slova.
Filtrování výsledků pomocí předpony
Pokud chcete filtrovat seznam kontejnerů, zadejte řetězec nebo znak pro argument klíčového name_starts_with
slova. Řetězec předpony může obsahovat jeden nebo více znaků. Azure Storage pak vrátí pouze kontejnery, jejichž názvy začínají danou předponou.
Zahrnout metadata kontejneru
Pokud chcete do výsledků zahrnout metadata kontejneru, nastavte argument klíčového include_metadata
slova na True
hodnotu . Azure Storage obsahuje metadata s každým vráceným kontejnerem, takže metadata kontejneru nemusíte načítat samostatně.
Zahrnutí odstraněných kontejnerů
Pokud chcete do výsledků zahrnout obnovitelné odstraněné kontejnery, nastavte argument klíčového include_deleted
slova na True
hodnotu .
Příklady kódu
Následující příklad uvádí všechny kontejnery a metadata. Metadata kontejneru můžete zahrnout nastavením include_metadata
na 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'])
Následující příklad uvádí pouze kontejnery, které začínají předponou zadanou v parametru 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'])
Můžete také zadat limit počtu výsledků na stránce. Tento příklad předá results_per_page
výsledky a stránkuje výsledky:
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'])
Asynchronní výpis kontejnerů
Klientská knihovna Azure Blob Storage pro Python podporuje asynchronní výpis kontejnerů. Další informace o požadavcích na nastavení projektu najdete v tématu Asynchronní programování.
Pomocí následujících kroků vypíšete kontejnery pomocí asynchronních rozhraní API:
Přidejte následující příkazy importu:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Přidejte kód pro spuštění programu pomocí
asyncio.run
. Tato funkce spustí předanou korutinu vmain()
našem příkladu a spravuje smyčkuasyncio
událostí. Koroutiny jsou deklarovány syntaxí async/await. V tomto příkladumain()
korutin nejprve vytvoří nejvyšší úroveňBlobServiceClient
pomocíasync with
, pak zavolá metodu, která vypíše kontejnery. Mějte na paměti, že pouze klient nejvyšší úrovně musí používatasync with
, protože ostatní klienti, kteří z něj vytvořili, sdílejí stejný fond připojení.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())
Přidejte kód pro výpis kontejnerů. Kód je stejný jako synchronní příklad s tím rozdílem, že metoda je deklarována pomocí klíčového
async
list_containers
slova aasync for
používá se při volání metody.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'])
S tímto základním nastavením můžete implementovat další příklady v tomto článku jako koruty pomocí syntaxe async/await.
Zdroje informací
Další informace o výpisu kontejnerů pomocí klientské knihovny Azure Blob Storage pro Python najdete v následujících zdrojích informací.
Ukázky kódu
- Zobrazení synchronních nebo asynchronních ukázek kódu z tohoto článku (GitHub)
Operace rozhraní REST API
Sada Azure SDK pro Python obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Pythonu. Metody klientské knihovny pro výpis kontejnerů používají následující operaci rozhraní REST API:
- Výpis kontejnerů (REST API)
Prostředky klientské knihovny
Viz také
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Python. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace v Pythonu.