當您從程式碼列出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 資源