Démarrage rapide : Gérer des objets blob avec le SDK Python v12Quickstart: Manage blobs with Python v12 SDK

Dans ce guide de démarrage rapide, vous découvrez comment gérer des objets blob avec Python.In this quickstart, you learn to manage blobs by using Python. Les objets blob sont des objets pouvant contenir de grandes quantités de texte ou de données binaires, notamment des images, des documents, des médias en streaming et des données d’archive.Blobs are objects that can hold large amounts of text or binary data, including images, documents, streaming media, and archive data. Vous allez charger, télécharger et lister des objets blob, et vous allez créer et supprimer des conteneurs.You'll upload, download, and list blobs, and you'll create and delete containers.

Autres ressources :More resources:

PrérequisPrerequisites

Notes

Les fonctionnalités décrites dans cet article sont désormais disponibles pour les comptes dotés d'un espace de noms hiérarchique.The features described in this article are now available to accounts that have a hierarchical namespace. Pour savoir quelles sont les limitations, consultez l’article Fonctionnalités de stockage blob disponibles dans Azure Data Lake Storage Gen2.To review limitations, see the Blob storage features available in Azure Data Lake Storage Gen2 article.

ConfigurationSetting up

Cette section vous guide tout au long de la préparation d’un projet à utiliser avec la bibliothèque cliente Stockage Blob Azure v12 pour Python.This section walks you through preparing a project to work with the Azure Blob Storage client library v12 for Python.

Créer le projetCreate the project

Créez une application Python nommée blob-quickstart-v12.Create a Python application named blob-quickstart-v12.

  1. Dans une fenêtre de console (telle que cmd, PowerShell ou Bash), créez un nouveau répertoire pour le projet.In a console window (such as cmd, PowerShell, or Bash), create a new directory for the project.

    mkdir blob-quickstart-v12
    
  2. Basculez vers le répertoire blob-quickstart-v12 nouvellement créé.Switch to the newly created blob-quickstart-v12 directory.

    cd blob-quickstart-v12
    
  3. Dans le répertoire blob-quickstart-v12, créez un autre répertoire nommé data.In side the blob-quickstart-v12 directory, create another directory called data. Ce répertoire est l’endroit où les fichiers de données Blob seront créés et stockés.This directory is where the blob data files will be created and stored.

    mkdir data
    

Installer le packageInstall the package

Alors que vous êtes toujours dans le répertoire de l’application, installez le package de la bibliothèque cliente Stockage Blob Azure pour Python à l’aide de la commande pip install.While still in the application directory, install the Azure Blob Storage client library for Python package by using the pip install command.

pip install azure-storage-blob

Cette commande installe le package de la bibliothèque cliente Stockage Blob Azure pour Python et toutes les bibliothèques dépendantes.This command installs the Azure Blob Storage client library for Python package and all the libraries on which it depends. Dans ce cas, il s’agit simplement de la bibliothèque Azure Core pour Python.In this case, that is just the Azure core library for Python.

Configurer le framework d’applicationSet up the app framework

À partir du répertoire de projet :From the project directory:

  1. Ouvrez un nouveau fichier texte dans votre éditeur de codeOpen a new text file in your code editor

  2. Ajoutez les instructions importAdd import statements

  3. Créer la structure du programme, y compris la gestion des exceptions de baseCreate the structure for the program, including basic exception handling

    Voici le code :Here's the code:

    import os, uuid
    from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient, __version__
    
    try:
        print("Azure Blob Storage v" + __version__ + " - Python quickstart sample")
    
        # Quick start code goes here
    
    except Exception as ex:
        print('Exception:')
        print(ex)
    
  4. Enregistrez le nouveau fichier sous blob-quickstart-v12.py dans le répertoire blob-quickstart-v12.Save the new file as blob-quickstart-v12.py in the blob-quickstart-v12 directory.

Copier vos informations d’identification depuis le portail AzureCopy your credentials from the Azure portal

Lorsque l’exemple d’application effectue une requête auprès du stockage Azure, il doit être autorisé.When the sample application makes a request to Azure Storage, it must be authorized. Pour autoriser une demande, ajoutez les informations d’identification de votre compte de stockage à l’application sous la forme d’une chaîne de connexion.To authorize a request, add your storage account credentials to the application as a connection string. Affichez les informations d'identification de votre compte de stockage en suivant ces étapes :View your storage account credentials by following these steps:

  1. Connectez-vous au portail Azure.Sign in to the Azure portal.

  2. Recherchez votre compte de stockage.Locate your storage account.

  3. Dans la section Paramètres de la présentation du compte de stockage, sélectionnez Clés d’accès.In the Settings section of the storage account overview, select Access keys. Vos clés d’accès au compte s’affichent, ainsi que la chaîne de connexion complète de chaque clé.Here, you can view your account access keys and the complete connection string for each key.

  4. Recherchez la valeur de Chaîne de connexion sous clé1, puis sélectionnez le bouton Copier pour copier la chaîne de connexion.Find the Connection string value under key1, and select the Copy button to copy the connection string. Vous allez ajouter la valeur de chaîne de connexion dans une variable d’environnement à l’étape suivante.You will add the connection string value to an environment variable in the next step.

    Capture d’écran montrant comment copier une chaîne de connexion à partir du portail Azure

Configurer votre chaîne de connexion de stockageConfigure your storage connection string

Après avoir copié votre chaîne de connexion, écrivez-la dans une variable d’environnement sur l’ordinateur local exécutant l’application.After you have copied your connection string, write it to a new environment variable on the local machine running the application. Pour définir la variable d’environnement, ouvrez une fenêtre de console et suivez les instructions pour votre système d’exploitation.To set the environment variable, open a console window, and follow the instructions for your operating system. Remplacez <yourconnectionstring> par votre chaîne de connexion.Replace <yourconnectionstring> with your actual connection string.

WindowsWindows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Après avoir ajouté la variable d’environnement dans Windows, vous devez démarrer une nouvelle instance de la fenêtre de commande.After you add the environment variable in Windows, you must start a new instance of the command window.

LinuxLinux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOSmacOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

Redémarrer des programmesRestart programs

Après avoir ajouté la variable d’environnement, redémarrez tous les programmes en cours d’exécution qui devront la lire.After you add the environment variable, restart any running programs that will need to read the environment variable. Par exemple, redémarrez votre environnement de développement ou éditeur avant de continuer.For example, restart your development environment or editor before continuing.

Modèle objetObject model

Stockage Blob Azure est optimisé pour stocker des quantités massives de données non structurées.Azure Blob Storage is optimized for storing massive amounts of unstructured data. Les données non structurées sont des données qui n’obéissent pas à un modèle ou une définition de données en particulier, comme des données texte ou binaires.Unstructured data is data that doesn't adhere to a particular data model or definition, such as text or binary data. Le stockage Blob offre trois types de ressources :Blob storage offers three types of resources:

  • Le compte de stockageThe storage account
  • Un conteneur dans le compte de stockage.A container in the storage account
  • Un blob dans le conteneurA blob in the container

Le diagramme suivant montre la relation entre ces ressources.The following diagram shows the relationship between these resources.

Diagramme de l’architecture du stockage Blob

Utilisez les classes Python suivantes pour interagir avec ces ressources :Use the following Python classes to interact with these resources:

  • BlobServiceClient: La classe BlobServiceClient vous permet de manipuler les ressources de stockage Azure et les conteneurs blob.BlobServiceClient: The BlobServiceClient class allows you to manipulate Azure Storage resources and blob containers.
  • ContainerClient : La classe ContainerClient vous permet de manipuler des conteneurs de stockage Azure et leurs blobs.ContainerClient: The ContainerClient class allows you to manipulate Azure Storage containers and their blobs.
  • BlobClient : La classe BlobClient vous permet de manipuler des blobs de stockage Azure.BlobClient: The BlobClient class allows you to manipulate Azure Storage blobs.

Exemples de codeCode examples

Ces exemples d’extraits de code vous montrent comment effectuer les tâches suivantes avec la bibliothèque cliente Stockage Blob Azure pour Python :These example code snippets show you how to do the following tasks with the Azure Blob Storage client library for Python:

Obtenir la chaîne de connexionGet the connection string

Le code ci-dessous récupère la chaîne de connexion du compte de stockage à partir de la variable d’environnement créée dans la section Configurer votre chaîne de connexion de stockage.The code below retrieves the storage account connection string from the environment variable created in the Configure your storage connection string section.

Ajoutez ce code dans le bloc try :Add this code inside the try block:

# Retrieve the connection string for use with the application. The storage
# connection string is stored in an environment variable on the machine
# running the application called AZURE_STORAGE_CONNECTION_STRING. If the environment variable is
# created after the application is launched in a console or with Visual Studio,
# the shell or application needs to be closed and reloaded to take the
# environment variable into account.
connect_str = os.getenv('AZURE_STORAGE_CONNECTION_STRING')

Créez un conteneur.Create a container

Choisissez un nom pour le nouveau conteneur.Decide on a name for the new container. Le code ci-dessous ajoute une valeur UUID au nom du conteneur pour garantir son unicité.The code below appends a UUID value to the container name to ensure that it's unique.

Important

Les noms de conteneurs doivent être en minuscules.Container names must be lowercase. Pour plus d’informations sur l’affectation de noms aux conteneurs et objets blob, consultez Affectation de noms et références aux conteneurs, objets blob et métadonnées.For more information about naming containers and blobs, see Naming and Referencing Containers, Blobs, and Metadata.

Créez une instance de la classe BlobServiceClient en appelant la méthode from_connection_string.Create an instance of the BlobServiceClient class by calling the from_connection_string method. Ensuite, appelez la méthode create_container pour effectivement créer le conteneur dans votre compte de stockage.Then, call the create_container method to actually create the container in your storage account.

Ajoutez ce code à la fin du bloc try :Add this code to the end of the try block:

# Create the BlobServiceClient object which will be used to create a container client
blob_service_client = BlobServiceClient.from_connection_string(connect_str)

# Create a unique name for the container
container_name = str(uuid.uuid4())

# Create the container
container_client = blob_service_client.create_container(container_name)

Charger des objets blob sur un conteneurUpload blobs to a container

L’extrait de code suivant :The following code snippet:

  1. Crée un répertoire local où seront stockés les fichiers de données.Creates a local directory to hold data files.
  2. Crée un fichier texte dans le répertoire local.Creates a text file in the local directory.
  3. Obtient une référence à un objet BlobClient en appelant la méthode get_blob_client sur le BlobServiceClient à partir de la section Créer un conteneur.Gets a reference to a BlobClient object by calling the get_blob_client method on the BlobServiceClient from the Create a container section.
  4. Charge le fichier texte local dans l’objet Blob en appelant la méthode upload_blob.Uploads the local text file to the blob by calling the upload_blob method.

Ajoutez ce code à la fin du bloc try :Add this code to the end of the try block:

# Create a local directory to hold blob data
local_path = "./data"
os.mkdir(local_path)

# Create a file in the local data directory to upload and download
local_file_name = str(uuid.uuid4()) + ".txt"
upload_file_path = os.path.join(local_path, local_file_name)

# Write text to the file
file = open(upload_file_path, 'w')
file.write("Hello, World!")
file.close()

# Create a blob client using the local file name as the name for the blob
blob_client = blob_service_client.get_blob_client(container=container_name, blob=local_file_name)

print("\nUploading to Azure Storage as blob:\n\t" + local_file_name)

# Upload the created file
with open(upload_file_path, "rb") as data:
    blob_client.upload_blob(data)

Créer la liste des objets blob d’un conteneurList the blobs in a container

Répertoriez les objets Blob dans le conteneur en appelant la méthode list_blobs.List the blobs in the container by calling the list_blobs method. Dans ce cas, un seul objet blob a été ajouté au conteneur. Il n’y a donc qu’un objet blob répertorié.In this case, only one blob has been added to the container, so the listing operation returns just that one blob.

Ajoutez ce code à la fin du bloc try :Add this code to the end of the try block:

print("\nListing blobs...")

# List the blobs in the container
blob_list = container_client.list_blobs()
for blob in blob_list:
    print("\t" + blob.name)

Télécharger des objets blobDownload blobs

Téléchargez l’objet Blob créé précédemment en appelant la méthode download_blob.Download the previously created blob by calling the download_blob method. L’exemple de code ajoute le suffixe « DOWNLOAD » au nom de fichier afin que vous puissiez voir les deux fichiers dans votre système de fichiers local.The example code adds a suffix of "DOWNLOAD" to the file name so that you can see both files in local file system.

Ajoutez ce code à la fin du bloc try :Add this code to the end of the try block:

# Download the blob to a local file
# Add 'DOWNLOAD' before the .txt extension so you can see both files in the data directory
download_file_path = os.path.join(local_path, str.replace(local_file_name ,'.txt', 'DOWNLOAD.txt'))
print("\nDownloading blob to \n\t" + download_file_path)

with open(download_file_path, "wb") as download_file:
    download_file.write(blob_client.download_blob().readall())

Supprimer un conteneurDelete a container

Le code suivant nettoie les ressources créées par l’application en supprimant l’ensemble du conteneur avec la méthode delete_container.The following code cleans up the resources the app created by removing the entire container using the delete_container method. Si vous voulez, vous pouvez aussi supprimer les fichiers locaux.You can also delete the local files, if you like.

L’application s’interrompt pour une entrée de l’utilisateur en appelant input() avant de supprimer l’objet blob, le conteneur et les fichiers locaux.The app pauses for user input by calling input() before it deletes the blob, container, and local files. Vérifiez que les ressources ont été créées correctement, avant de les supprimer.Verify that the resources were created correctly, before they're deleted.

Ajoutez ce code à la fin du bloc try :Add this code to the end of the try block:

# Clean up
print("\nPress the Enter key to begin clean up")
input()

print("Deleting blob container...")
container_client.delete_container()

print("Deleting the local source and downloaded files...")
os.remove(upload_file_path)
os.remove(download_file_path)
os.rmdir(local_path)

print("Done")

Exécuter le codeRun the code

Cette application crée un fichier de test dans votre dossier local et le charge dans Stockage Blob Azure.This app creates a test file in your local folder and uploads it to Azure Blob Storage. L’exemple liste ensuite le ou les objets blob du conteneur et télécharge le fichier sous un nouveau nom.The example then lists the blobs in the container, and downloads the file with a new name. Vous pouvez comparer les anciens fichiers avec les nouveaux.You can compare the old and new files.

Accédez au répertoire contenant le fichier blob-quickstart-v12.py, puis exécutez la commande python suivante pour exécuter l’application.Navigate to the directory containing the blob-quickstart-v12.py file, then execute the following python command to run the app.

python blob-quickstart-v12.py

La sortie de l’application ressemble à l’exemple suivant :The output of the app is similar to the following example:

Azure Blob Storage v12 - Python quickstart sample

Uploading to Azure Storage as blob:
        quickstartcf275796-2188-4057-b6fb-038352e35038.txt

Listing blobs...
        quickstartcf275796-2188-4057-b6fb-038352e35038.txt

Downloading blob to
        ./data/quickstartcf275796-2188-4057-b6fb-038352e35038DOWNLOAD.txt

Press the Enter key to begin clean up

Deleting blob container...
Deleting the local source and downloaded files...
Done

Avant de commencer le processus de nettoyage, vérifiez la présence des deux fichiers dans votre dossier data.Before you begin the cleanup process, check your data folder for the two files. Vous pouvez les ouvrir et constater qu’ils sont identiques.You can open them and observe that they're identical.

Une fois les fichiers vérifiés, appuyez sur Entrée pour supprimer les fichiers de test et terminer la démonstration.After you've verified the files, press the Enter key to delete the test files and finish the demo.

Étapes suivantesNext steps

Dans ce démarrage rapide, vous avez appris à charger, télécharger et répertorier des objets blob avec Python.In this quickstart, you learned how to upload, download, and list blobs using Python.

Pour afficher des exemples d’applications de stockage blob, passez à :To see Blob storage sample apps, continue to: