Megosztás a következőn keresztül:


Blobtárolók listázása Pythonnal

Ha egy Azure Storage-fiókban lévő tárolókat listáz a kódból, több lehetőséget is megadhat az eredmények Azure Storage-ból való visszaadására. Ez a cikk bemutatja, hogyan listázhatja a tárolókat a Pythonhoz készült Azure Storage ügyfélkódtár használatával.

A blobtárolók aszinkron API-k használatával történő listázásáról további információt a tárolók aszinkron listázása című témakörben talál.

Prerequisites

Saját környezet beállítása

Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be egy projektet a PythonHoz készült Azure Blob Storage ügyfélkódtár használatához. További részletekért tekintse meg az Azure Blob Storage és a Python használatának első lépéseit.

A jelen cikkben szereplő példakódok használatához kövesse az alábbi lépéseket a projekt beállításához.

Csomagok telepítése

Telepítse a következő csomagokat az pip install használatával.

pip install azure-storage-blob azure-identity

Importálási utasítások hozzáadása

Adja hozzá a következő import-utasításokat:

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

Authorization

Az engedélyezési mechanizmusnak rendelkeznie kell a blobtárolók listázásához szükséges engedélyekkel. A Microsoft Entra-azonosítóval történő engedélyezéshez (ajánlott) szüksége van az Azure RBAC beépített szerepköreinek egyikére, például a Storage Blob Data közreműködő vagy annál magasabb szintű szerepkörre. További információkért tekintse meg a List Containers (REST API) engedélyezési útmutatóját.

Ügyfélobjektum létrehozása

Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy BlobServiceClient-példányt. Az alábbi példa bemutatja, hogyan hozhat létre ügyfélobjektumot DefaultAzureCredential engedélyezés céljából:

# 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)

Ügyfélobjektumokat is létrehozhat adott tárolókhoz vagy blobokhoz közvetlenül vagy az BlobServiceClient objektumból. Az ügyfélobjektumok létrehozásáról és kezeléséről további információt az adaterőforrásokat kezelő ügyfélobjektumok létrehozása és kezelése című témakörben talál.

A tárolók listázási lehetőségeiről

Ha tárolókat listáz a kódból, megadhatja az eredmények Azure Storage-ból való visszaadására vonatkozó beállításokat. Megadhatja az egyes találathalmazokban visszaadandó eredmények számát, majd lekérheti a következő halmazokat. Az eredményeket előtaggal is szűrheti, és a tároló metaadatait is visszaadhatja az eredményekkel. Ezeket a lehetőségeket a következő szakaszok ismertetik.

A tárfiók tárolóinak listázásához hívja meg a következő módszert:

Ez a metódus egy ContainerProperties típusú iterátert ad vissza. A tárolók név szerint vannak lexikális sorrendben rendezve.

Az eredmény visszaadott értékének kezelése

Alapértelmezés szerint egy listaművelet legfeljebb 5000 eredményt ad vissza egyszerre. Ha kisebb eredményhalmazt szeretne visszaadni, adjon meg egy nem nulla értéket a results_per_page kulcsszóargumentumhoz.

Eredmények szűrése előtaggal

A tárolók listájának szűréséhez adjon meg egy sztringet vagy karaktert a name_starts_with kulcsszóargumentumhoz. Az előtag sztringje egy vagy több karaktert tartalmazhat. Az Azure Storage ezután csak azokat a tárolókat adja vissza, amelyeknek a neve ezzel az előtaggal kezdődik.

Tároló metaadatainak belefoglalása

A tároló metaadatainak az eredményekhez való hozzáadásához állítsa a include_metadata kulcsszó argumentumát a következőre True: . Az Azure Storage minden visszaadott tárolóhoz tartalmaz metaadatokat, így nem kell külön lekérnie a tároló metaadatait.

Törölt tárolók belefoglalása

Ha a lágyan törölt tárolókat az eredmények közé szeretné felvenni, állítsa a include_deleted kulcsszó argumentumát True-re.

Példakódok

Az alábbi példa az összes tárolót és metaadatot felsorolja. A tároló metaadatát a include_metadata beállításával True adhatja meg:

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

Az alábbi példa csak a paraméterben megadott előtaggal kezdődő tárolókat sorolja fel 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'])

Az oldalankénti találatok számának korlátozását is megadhatja. Ez a példa átadja az results_per_page-ba és oldalakra bontja az eredményeket.

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

Tárolók aszinkron listázása

A Pythonhoz készült Azure Blob Storage ügyfélkódtár a tárolók aszinkron felsorolását támogatja. A projektbeállítási követelményekről további információt az Aszinkron programozás című témakörben talál.

Kövesse az alábbi lépéseket a tárolók aszinkron API-k használatával történő listázásához:

  1. Adja hozzá a következő importálási utasításokat:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. Adjon hozzá kódot a program futtatásához a asyncio.run használatával. Ez a függvény a példánkban futtatja az átadott koroutint, main() és kezeli az asyncio eseményhurokot. A koroutinok az aszinkron/várakozási szintaxissal vannak deklarálva. Ebben a példában a main() koroutin először a legfelső szintet BlobServiceClient hozza létre a async with használatával, majd meghívja a tárolókat felsoroló metódust. Vegye figyelembe, hogy csak a legfelső szintű ügyfélnek kell használnia async with, mivel az abból létrehozott többi ügyfél ugyanazt a kapcsolatkészletet használja.

    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. Adjon hozzá kódot a tárolók listázásához. A kód megegyezik a szinkron példával, azzal a kivétellel, hogy a metódus a kulcsszóval async van deklarálva, és async for a list_containers metódus meghívásakor használatos.

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

Ezzel az alapszintű beállítással a cikkben más példákat is implementálhat coroutinesként az aszinkron/várakozási szintaxis használatával.

Resources

A tárolók Pythonhoz készült Azure Blob Storage-ügyfélkódtár használatával történő listázásáról az alábbi forrásokban olvashat bővebben.

Kódrészletek

REST API-műveletek

Az Azure SDK for Python olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát jól ismert Python-paradigmákon keresztül. A tárolók listázásához használt ügyfélkódtár-metódusok a következő REST API-műveletet használják:

Ügyfélkódtár erőforrásai

Lásd még

  • Ez a cikk a Python Blob Storage fejlesztői útmutatójának része. További információkért tekintse meg a Python-alkalmazás buildeléséhez kapcsolódó fejlesztői útmutatók teljes listáját.