Inicio rápido: Administración de blobs con el SDK de Python v12Quickstart: Manage blobs with Python v12 SDK

En este inicio rápido, se aprende a administrar blobs mediante Python.In this quickstart, you learn to manage blobs by using Python. Los blobs son objetos que pueden contener grandes cantidades de texto o datos binarios, como imágenes, documentos, medios de transmisión y datos de archivo.Blobs are objects that can hold large amounts of text or binary data, including images, documents, streaming media, and archive data. Cargará, descargará y enumerará los blobs, y creará y eliminará los contenedores.You'll upload, download, and list blobs, and you'll create and delete containers.

Recursos adicionales:Additional resources:

Requisitos previosPrerequisites

Nota

Las características que se describen en este artículo ya están disponibles para las cuentas que tienen un espacio de nombres jerárquico.The features described in this article are now available to accounts that have a hierarchical namespace. Para revisar las limitaciones, consulte el artículo Características de Blob Storage disponibles en Azure Data Lake Storage Gen2.To review limitations, see the Blob storage features available in Azure Data Lake Storage Gen2 article.

InstalaciónSetting up

En esta sección se explica cómo preparar un proyecto para que funcione con la biblioteca cliente de Azure Blob Storage v12 para Python.This section walks you through preparing a project to work with the Azure Blob storage client library v12 for Python.

Creación del proyectoCreate the project

Cree una aplicación de Python llamada blob-quickstart-v12.Create a Python application named blob-quickstart-v12.

  1. En una ventana de la consola (como cmd, PowerShell o Bash), cree un directorio para el proyecto.In a console window (such as cmd, PowerShell, or Bash), create a new directory for the project.

    mkdir blob-quickstart-v12
    
  2. Cambie al directorio blob-quickstart-v12 recién creado.Switch to the newly created blob-quickstart-v12 directory.

    cd blob-quickstart-v12
    
  3. En el directorio blob-quickstart-v12, cree otro directorio denominado data.In side the blob-quickstart-v12 directory, create another directory called data. Aquí es donde se crearán y almacenarán los archivos de datos de blobs.This is where the blob data files will be created and stored.

    mkdir data
    

Instalar el paqueteInstall the package

Mientras sigue en el directorio de aplicaciones, instale el paquete de la biblioteca cliente de Azure Blob Storage para Python con el comando 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

Este comando instala el paquete de la biblioteca cliente de Azure Blob Storage para Python y todas las bibliotecas de las que depende.This command installs the Azure Blob storage client library for Python package and all the libraries on which it depends. En este caso, se trata solo de la biblioteca principal de Azure para Python.In this case, that is just the Azure core library for Python.

Instalación del marco de la aplicaciónSet up the app framework

Desde el directorio del proyecto:From the project directory:

  1. Abra un nuevo archivo de texto en el editor de código.Open a new text file in your code editor

  2. Agregue instrucciones import.Add import statements

  3. Cree la estructura del programa, incluido un control de excepciones básico.Create the structure for the program, including basic exception handling

    Este es el código: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. Guarde el nuevo archivo como blob-quickstart-v12.py en el directorio blob-quickstart-v12.Save the new file as blob-quickstart-v12.py in the blob-quickstart-v12 directory.

Copia de las credenciales desde Azure PortalCopy your credentials from the Azure portal

Cuando la aplicación de ejemplo realiza una solicitud a Azure Storage, debe estar autorizada.When the sample application makes a request to Azure Storage, it must be authorized. Para autorizar una solicitud, agregue a la aplicación las credenciales de la cuenta de almacenamiento en forma de cadena de conexión.To authorize a request, add your storage account credentials to the application as a connection string. Para ver las credenciales de la cuenta de almacenamiento, siga estos pasos:View your storage account credentials by following these steps:

  1. Inicie sesión en Azure Portal.Sign in to the Azure portal.

  2. Busque su cuenta de almacenamiento.Locate your storage account.

  3. En la sección Configuración de la información general de la cuenta de almacenamiento, seleccione Claves de acceso.In the Settings section of the storage account overview, select Access keys. Aquí puede ver las claves de acceso de la cuenta, así como la cadena de conexión completa de cada clave.Here, you can view your account access keys and the complete connection string for each key.

  4. Busque el valor de Cadena de conexión en key1 y seleccione el botón Copiar para copiar la cadena de conexión.Find the Connection string value under key1, and select the Copy button to copy the connection string. En el paso siguiente, agregará el valor de la cadena de conexión a una variable de entorno.You will add the connection string value to an environment variable in the next step.

    Captura de pantalla que muestra cómo copiar una cadena de conexión desde Azure Portal

Configuración de la cadena de conexión de almacenamiento.Configure your storage connection string

Una vez que haya copiado la cadena de conexión, escríbala en una variable de entorno nueva en la máquina local que ejecuta la aplicación.After you have copied your connection string, write it to a new environment variable on the local machine running the application. Para establecer la variable de entorno, abra una ventana de consola y siga las instrucciones de su sistema operativo.To set the environment variable, open a console window, and follow the instructions for your operating system. Reemplace <yourconnectionstring> por la cadena de conexión real.Replace <yourconnectionstring> with your actual connection string.

WindowsWindows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Después de agregar la variable de entorno en Windows, debe iniciar una nueva instancia de la ventana de comandos.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>"

Reiniciar programasRestart programs

Después de agregar la variable de entorno, reinicie todos los programas en ejecución que necesiten leer esta variable.After you add the environment variable, restart any running programs that will need to read the environment variable. Por ejemplo, reinicie el entorno de desarrollo o el editor antes de continuar.For example, restart your development environment or editor before continuing.

Modelo de objetosObject model

Azure Blob Storage está optimizado para el almacenamiento de cantidades masivas de datos no estructurados.Azure Blob storage is optimized for storing massive amounts of unstructured data. Los datos no estructurados son datos que no cumplen un modelo de datos o definición concreta, como texto o datos binarios.Unstructured data is data that does not adhere to a particular data model or definition, such as text or binary data. Blob Storage ofrece tres tipos de recursos:Blob storage offers three types of resources:

  • La cuenta de almacenamientoThe storage account
  • Un contenedor en la cuenta de almacenamientoA container in the storage account
  • Un blob en el contenedorA blob in the container

En el siguiente diagrama se muestra la relación entre estos recursos.The following diagram shows the relationship between these resources.

Diagrama de arquitectura de Blob Storage

Use las siguientes clases de Python para interactuar con estos recursos:Use the following Python classes to interact with these resources:

  • BlobServiceClient: La clase BlobServiceClient permite manipular recursos de Azure Storage y contenedores de blobs.BlobServiceClient: The BlobServiceClient class allows you to manipulate Azure Storage resources and blob containers.
  • ContainerClient: La clase ContainerClient permite manipular contenedores de Azure Storage y sus blobs.ContainerClient: The ContainerClient class allows you to manipulate Azure Storage containers and their blobs.
  • BlobClient: La clase BlobClient permite manipular los blobs de Azure Storage.BlobClient: The BlobClient class allows you to manipulate Azure Storage blobs.

Ejemplos de códigoCode examples

Estos fragmentos de código de ejemplo muestran cómo realizar las siguientes acciones con la biblioteca cliente de Azure Blob Storage para Python:These example code snippets show you how to perform the following with the Azure Blob storage client library for Python:

Obtención de la cadena de conexiónGet the connection string

El código siguiente recupera la cadena de conexión de la cuenta de almacenamiento de la variable de entorno creada en la sección Configuración de la cadena de conexión de almacenamiento.The code below retrieves the connection string for the storage account from the environment variable created in the Configure your storage connection string section.

Agregue este código dentro del bloque 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')

Crear un contenedorCreate a container

Decida un nombre para el nuevo contenedor.Decide on a name for the new container. El código siguiente anexa un valor de UUID al nombre de contenedor para asegurarse de que sea único.The code below appends a UUID value to the container name to ensure that it is unique.

Importante

Los nombres de contenedor deben estar en minúsculas.Container names must be lowercase. Para más información acerca de los contenedores de nomenclatura y los blobs, consulte Naming and Referencing Containers, Blobs, and Metadata (Asignación de nombres y realización de referencias a contenedores, blobs y metadatos).For more information about naming containers and blobs, see Naming and Referencing Containers, Blobs, and Metadata.

Cree una instancia de la clase BlobServiceClient llamando al método from_connection_string.Create an instance of the BlobServiceClient class by calling the from_connection_string method. A continuación, llame al método create_container para crear realmente el contenedor en la cuenta de almacenamiento.Then, call the create_container method to actually create the container in your storage account.

Agregue este código al final del bloque 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 = "quickstart" + str(uuid.uuid4())

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

Carga de los blobs en un contenedorUpload blobs to a container

El siguiente fragmento de código:The following code snippet:

  1. Crea un archivo de texto en el directorio local.Creates a text file in the local directory.
  2. Obtiene una referencia a un objeto BlobClient llamando al método get_blob_client en la clase BlobServiceClient de la sección Crear un contenedor.Gets a reference to a BlobClient object by calling the get_blob_client method on the BlobServiceClient from the Create a container section.
  3. Carga el archivo de texto local en el blob llamando al método upload_blob.Uploads the local text file to the blob by calling the upload_blob method.

Agregue este código al final del bloque try:Add this code to the end of the try block:

# Create a file in local data directory to upload and download
local_path = "./data"
local_file_name = "quickstart" + 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)

Enumerar los blobs de un contenedorList the blobs in a container

Enumere los blobs en el contenedor llamando al método list_blobs.List the blobs in the container by calling the list_blobs method. En este caso, solo se ha agregado un blob al contenedor, por lo que la operación de enumeración devuelve simplemente dicho blob.In this case, only one blob has been added to the container, so the listing operation returns just that one blob.

Agregue este código al final del bloque 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)

Descargar blobsDownload blobs

Descargue el blob creado previamente llamando al método download_blob.Download the previously created blob by calling the download_blob method. El código de ejemplo agrega el sufijo "DOWNLOAD" al nombre de archivo para que pueda ver ambos archivos en el sistema de archivos local.The example code adds a suffix of "DOWNLOAD" to the file name so that you can see both files in local file system.

Agregue este código al final del bloque 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())

Eliminación de un contenedorDelete a container

El código siguiente limpia los recursos que creó la aplicación; para ello, quita todo el contenedor con el método delete_container.The following code cleans up the resources the app created by removing the entire container using the delete_container method. Si lo desea, también puede eliminar los archivos locales.You can also delete the local files, if you like.

La aplicación se detiene para la entrada del usuario mediante una llamada a input() antes de eliminar el blob, el contenedor y los archivos locales.The app pauses for user input by calling input() before it deletes the blob, container, and local files. Esta es una buena oportunidad para verificar que los recursos se han creado correctamente antes de eliminarlos.This is a good chance to verify that the resources were created correctly, before they are deleted.

Agregue este código al final del bloque 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)

print("Done")

Ejecución del códigoRun the code

Esta aplicación crea un archivo de prueba en la carpeta local y lo carga en Blob Storage.This app creates a test file in your local folder and uploads it to Blob storage. Después, en el ejemplo se enumeran los blobs del contenedor y se descarga el archivo con un nombre nuevo para que pueda comparar los archivos antiguo y nuevo.The example then lists the blobs in the container and downloads the file with a new name so that you can compare the old and new files.

Navegue hasta el directorio que contiene el archivo blob-quickstart-v12.py y, a continuación, ejecute el siguiente comando de python para ejecutar la aplicación.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 salida de la aplicación es similar a la del ejemplo siguiente: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

Antes de comenzar a limpiar el proceso, compruebe la carpeta data para los dos archivos.Before you begin the clean up process, check your data folder for the two files. Puede abrirlos y ver que son idénticos.You can open them and observe that they are identical.

Después de haber comprobado los archivos, presione la tecla Entrar para eliminar los archivos de prueba y terminar la demostración.After you've verified the files, press the Enter key to delete the test files and finish the demo.

Pasos siguientesNext steps

En esta guía de inicio rápido, ha aprendido a cargar, descargar y enumerar blobs mediante Python.In this quickstart, you learned how to upload, download, and list blobs using Python.

Para ver las aplicaciones de ejemplo de Blob Storage, siga estos pasos:To see Blob storage sample apps, continue to: