Wyświetlanie listy kontenerów obiektów blob przy użyciu języka Python
Po wyświetleniu listy kontenerów na koncie usługi Azure Storage z poziomu kodu można określić kilka opcji zarządzania sposobem zwracania wyników z usługi Azure Storage. W tym artykule pokazano, jak wyświetlić listę kontenerów przy użyciu biblioteki klienta usługi Azure Storage dla języka Python.
Aby dowiedzieć się więcej na temat wyświetlania listy kontenerów obiektów blob przy użyciu asynchronicznych interfejsów API, zobacz Asynchronicznie wyświetlanie listy kontenerów.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Konto usługi Azure Storage — tworzenie konta magazynu
- Python 3.8+
Konfigurowanie środowiska
Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla języka Python. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i Python.
Aby pracować z przykładami kodu w tym artykule, wykonaj następujące kroki, aby skonfigurować projekt.
Instalowanie pakietów
Zainstaluj następujące pakiety przy użyciu polecenia pip install
:
pip install azure-storage-blob azure-identity
Dodawanie instrukcji importu
Dodaj następujące instrukcje import
:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autoryzacja
Mechanizm autoryzacji musi mieć niezbędne uprawnienia do wyświetlania listy kontenerów obiektów blob. Aby uzyskać autoryzację przy użyciu identyfikatora Entra firmy Microsoft (zalecane), potrzebujesz wbudowanej kontroli dostępu opartej na rolach platformy Azure współautora danych obiektów blob usługi Storage lub nowszego. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dla kontenerów list (interfejs API REST).
Tworzenie obiektu klienta
Aby połączyć aplikację z usługą Blob Storage, utwórz wystąpienie klasy BlobServiceClient. W poniższym przykładzie pokazano, jak utworzyć obiekt klienta przy użyciu DefaultAzureCredential
autoryzacji:
# 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)
Można również tworzyć obiekty klienta dla określonych kontenerów lub obiektów blob bezpośrednio lub z BlobServiceClient
obiektu. Aby dowiedzieć się więcej na temat tworzenia obiektów klienta i zarządzania nimi, zobacz Tworzenie obiektów klienta korzystających z zasobów danych i zarządzanie nimi.
Informacje o opcjach listy kontenerów
Podczas wyświetlania listy kontenerów z kodu można określić opcje zarządzania sposobem zwracania wyników z usługi Azure Storage. Możesz określić liczbę wyników, które mają być zwracane w każdym zestawie wyników, a następnie pobrać kolejne zestawy. Wyniki można również filtrować według prefiksu i zwracać metadane kontenera za pomocą wyników. Te opcje opisano w poniższych sekcjach.
Aby wyświetlić listę kontenerów na koncie magazynu, wywołaj następującą metodę:
Ta metoda zwraca iterowalny typ ContainerProperties. Kontenery są uporządkowane leksykograficznie według nazwy.
Zarządzanie liczbą zwracanych wyników
Domyślnie operacja wyświetlania listy zwraca maksymalnie 5000 wyników jednocześnie. Aby zwrócić mniejszy zestaw wyników, podaj wartość niezerową argumentu słowa kluczowego results_per_page
.
Filtrowanie wyników za pomocą prefiksu
Aby przefiltrować listę kontenerów, określ ciąg lub znak argumentu kluczowego name_starts_with
. Ciąg prefiksu może zawierać co najmniej jeden znak. Usługa Azure Storage zwraca następnie tylko kontenery, których nazwy zaczynają się od tego prefiksu.
Dołączanie metadanych kontenera
Aby uwzględnić metadane kontenera z wynikami, ustaw argument słowa kluczowego include_metadata
na True
. Usługa Azure Storage zawiera metadane z każdym zwróconym kontenerem, więc nie trzeba pobierać metadanych kontenera oddzielnie.
Dołączanie usuniętych kontenerów
Aby uwzględnić kontenery usunięte nietrwale z wynikami, ustaw argument słowa kluczowego include_deleted
na True
.
Przykłady kodu
W poniższym przykładzie wymieniono wszystkie kontenery i metadane. Metadane kontenera można uwzględnić, ustawiając wartość 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'])
W poniższym przykładzie wymieniono tylko kontenery rozpoczynające się od prefiksu określonego w parametrze 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'])
Można również określić limit liczby wyników na stronę. Ten przykład przekazuje results_per_page
wyniki i dzieli je na strony:
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'])
Asynchroniczna lista kontenerów
Biblioteka klienta usługi Azure Blob Storage dla języka Python obsługuje asynchronicznie wyświetlanie listy kontenerów. Aby dowiedzieć się więcej na temat wymagań dotyczących konfiguracji projektu, zobacz Programowanie asynchroniczne.
Wykonaj następujące kroki, aby wyświetlić listę kontenerów przy użyciu asynchronicznych interfejsów API:
Dodaj następujące instrukcje importowania:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Dodaj kod, aby uruchomić program przy użyciu polecenia
asyncio.run
. Ta funkcja uruchamia przekazaną kohroutynę wmain()
naszym przykładzie i zarządza pętląasyncio
zdarzeń. Coroutines są deklarowane za pomocą składni async/await. W tym przykładziemain()
coroutine najpierw tworzy najwyższy poziomBlobServiceClient
przy użyciu metodyasync with
, a następnie wywołuje metodę, która wyświetla listę kontenerów. Należy pamiętać, że tylko klient najwyższego poziomu musi używać programuasync with
, ponieważ inni klienci utworzoni na jego podstawie współużytkować tę samą pulę połączeń.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())
Dodaj kod, aby wyświetlić listę kontenerów. Kod jest taki sam jak w przykładzie synchronicznym, z tą różnicą, że metoda jest zadeklarowana za pomocą słowa kluczowego
async
iasync for
jest używana podczas wywoływanialist_containers
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'])
Ta podstawowa konfiguracja umożliwia zaimplementowanie innych przykładów w tym artykule jako kohroutines przy użyciu składni async/await.
Zasoby
Aby dowiedzieć się więcej na temat wyświetlania listy kontenerów przy użyciu biblioteki klienta usługi Azure Blob Storage dla języka Python, zobacz następujące zasoby.
Przykłady kodu
- Wyświetlanie synchronicznych lub asynchronicznych przykładów kodu z tego artykułu (GitHub)
Operacje interfejsu API REST
Zestaw Azure SDK dla języka Python zawiera biblioteki, które bazują na interfejsie API REST platformy Azure, umożliwiając interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Python. Metody biblioteki klienta do wyświetlania listy kontenerów używają następującej operacji interfejsu API REST:
- Wyświetlanie listy kontenerów (interfejs API REST)
Zasoby biblioteki klienta
Zobacz też
Powiązana zawartość
- Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Python. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów w temacie Tworzenie aplikacji w języku Python.