當您從程式碼列出Azure 儲存體帳戶中的容器時,您可以指定數個選項來管理如何從Azure 儲存體傳回結果。 本文說明如何使用適用于 Python Azure 儲存體 用戶端程式庫來列出容器。

若要瞭解如何使用非同步 API 列出 Blob 容器,請參閱 以非同步方式 列出容器。

  • 本文假設您已經設定專案來處理適用于 Python 的 Azure Blob 儲存體 用戶端程式庫。 若要瞭解如何設定專案,包括套件安裝、新增 import 語句,以及建立授權的用戶端物件,請參閱 開始使用 Azure Blob 儲存體 和 Python
  • 授權 機制 必須具有列出 Blob 容器的許可權。 若要深入瞭解,請參閱下列 REST API 作業的授權指引:

      關於容器清單選項

      從程式碼列出容器時,您可以指定選項來管理如何從Azure 儲存體傳回結果。 您可以指定要在每個結果集中傳回的結果數目,然後擷取後續的集合。 您也可以依前置詞篩選結果,並使用結果傳回容器中繼資料。 下列各節將說明這些選項。

      若要列出儲存體帳戶中的容器,請呼叫下列方法:

    • BlobServiceClient.list_containers
    • 這個方法會傳回 ContainerProperties 類型的 反覆運算。 容器會依名稱依語彙排序。

      管理傳回多少結果

      根據預設,清單作業一次最多會傳回 5000 個結果。 若要傳回較小的結果集,請為關鍵字引數提供非零值 results_per_page

      使用前置詞篩選結果

      若要篩選容器清單,請指定關鍵字引數的 name_starts_with 字串或字元。 前置詞字串可以包含一或多個字元。 Azure 儲存體然後只會傳回名稱開頭為該前置詞的容器。

      包含容器中繼資料

      若要將容器中繼資料與結果一起包含,請將 include_metadata 關鍵字引數設定為 True 。 Azure 儲存體包含傳回每個容器的中繼資料,因此您不需要個別擷取容器中繼資料。

      包含已刪除的容器

      若要包含結果的虛刪除容器,請將 關鍵字引數設定 include_deleted True

      程式碼範例

      下列範例會列出所有容器和中繼資料。 您可以將 設定 include_metadata 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'])

      下列範例只會列出開頭為 參數中所指定前置詞的 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'])

      您也可以為每個頁面的結果數目指定限制。 此範例會傳入 results_per_page 並分頁結果:

      def list_containers_pages(self, blob_service_client: BlobServiceClient): 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'])

      以非同步方式列出容器

      適用于 Python 的 Azure Blob 儲存體 用戶端程式庫支援以非同步方式列出容器。 若要深入瞭解專案設定需求,請參閱 非同步程式設計

      請遵循下列步驟,使用非同步 API 列出容器:

    • 新增下列匯入陳述式:

      import asyncio
      from azure.identity.aio import DefaultAzureCredential
      from azure.storage.blob.aio import BlobServiceClient
      
    • 新增程式碼以使用 asyncio.run 執行程式。 此函式會在我們的範例中執行 main() 傳遞的 asyncio 協同程式,並管理事件迴圈。 協同程式會以 async/await 語法宣告。 在此範例中 main() ,協同程式會先使用 async with 建立最上層 BlobServiceClient ,然後呼叫列出容器的方法。 請注意,只有最上層用戶端需要使用 async with ,因為從它建立的其他用戶端會共用相同的連線集區。

      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())
    • 新增程式碼以列出容器。 程式碼與同步範例相同,不同之處在于方法是以 關鍵字宣告 async ,並在 async for 呼叫 list_containers 方法時使用。

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

      有了這個基本設定,您可以使用 async/await 語法,實作本文中的其他範例作為協同程式。

      若要深入瞭解如何使用適用于 Python 的 Azure Blob 儲存體 用戶端程式庫來列出容器,請參閱下列資源。

      REST API 操作

      適用于 Python 的 Azure SDK 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 Python 範例與 REST API 作業互動。 列出容器的用戶端程式庫方法會使用下列 REST API 作業:

    • 列出容器 (REST API)
    • 程式碼範例

    • 檢視 本文中的同步 非同步程式 代碼範例 (GitHub)
    • 用戶端程式庫資源

    • 用戶端程式庫參考檔
    • 用戶端程式庫原始程式碼
    • 套件 (PyPi)
    • 列舉 Blob 資源
  •