Краткое руководство. Управление большими двоичными объектами с помощью пакета SDK для Python версии 12
Из этого краткого руководства вы узнаете, как управлять большими двоичными объектами с использованием Python. Большие двоичные объекты — это объекты, которые могут содержать большие объемы текстовых или двоичных данных, включая изображения, документы, потоковое мультимедиа и архивные данные. Вы научитесь отправлять и скачивать большие двоичные объекты, получать список таких объектов, а также создавать и удалять контейнеры.
Дополнительные ресурсы:
Предварительные требования
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно.
- Учетная запись хранения Azure. Создание учетной записи хранения.
- Python 2.7, 3.6 или более поздней версии.
Настройка
В этом разделе рассматривается подготовка проекта для работы с клиентской библиотекой Хранилища BLOB-объектов Azure версии 12 для Python.
Создание проекта
Создайте приложение Python с именем blob-quickstart-v12.
В окне консоли (командная строка, PowerShell или Bash) создайте каталог для проекта.
mkdir blob-quickstart-v12Перейдите в только что созданный каталог blob-quickstart-v12.
cd blob-quickstart-v12
Установка пакета
Оставаясь в каталоге приложения, установите пакет клиентской библиотеки Хранилища BLOB-объектов Azure для Python с помощью команды pip install.
pip install azure-storage-blob
Эта команда устанавливает пакет клиентской библиотеки Хранилища BLOB-объектов Azure для Python и все библиотеки, от которых она зависит. В данном случае это только основная библиотека Azure для Python.
Настройка платформы приложения
Из каталога проекта:
Откройте новый текстовый файл в редакторе кода.
Добавьте в него операторы
import.Создайте структуру программы, включая простую обработку исключений.
Вот этот код:
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)Сохраните новый файл как blob-quickstart-v12.py в каталоге blob-quickstart-v12.
Копирование учетных данных с портала Azure
Когда пример приложения выполняет запрос к службе хранилища Azure, он должен быть авторизован. Для авторизации запроса добавьте в приложение учетные данные учетной записи хранения в виде строки подключения. Чтобы просмотреть учетные данные учетной записи хранения, выполните следующие шаги:
Войдите на портал Azure.
Перейдите к учетной записи хранения.
На панели меню учетной записи хранения в разделе Безопасность и сети выберите Ключи доступа. На этой странице вы увидите ключи доступа к учетной записи и полную строку подключения для каждого ключа.

В области Ключи доступа выберите команду Показать ключи.
В разделе key1 выберите значение Строка подключения. Нажмите значок Копировать в буфер обмена, чтобы скопировать строку подключения. В следующем разделе вы добавите значение строки подключения в переменную среды.

Настройка строки подключения хранилища
После копирования строки подключения запишите ее в переменной среды на локальном компьютере, где выполняется приложение. Чтобы задать переменную среды, откройте окно консоли и следуйте инструкциям для используемой операционной системы. Замените <yourconnectionstring> фактической строкой подключения.
setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"
После добавления переменной среды в Windows вам необходимо запустить новый экземпляр командного окна.
Перезапуск программ
После добавления переменной среды перезапустите все запущенные программы, которым может понадобиться считать переменную среды. Например, перезапустите среду разработки или редактор, прежде чем продолжить.
Объектная модель
Хранилище BLOB-объектов Azure оптимизировано для хранения больших объемов неструктурированных данных. Неструктурированные данные — это данные, которые не соответствуют определенной модели данных или определению, например текстовых или двоичных данных. В хранилище BLOB-объектов предлагается три типа ресурсов:
- учетная запись хранения;
- контейнер в учетной записи хранения;
- большой двоичный объект в контейнере.
На следующей схеме показана связь между этими ресурсами.

Используйте следующие классы Python для взаимодействия с этими ресурсами.
- BlobServiceClient. Класс
BlobServiceClientпозволяет управлять ресурсами службы хранилища Azure и контейнерами больших двоичных объектов. - ContainerClient. Класс
ContainerClientпозволяет управлять контейнерами службы хранилища Azure и содержащимися в них большими двоичными объектами. - BlobClient. Класс
BlobClientпозволяет управлять большими двоичными объектами службы хранилища Azure.
Примеры кода
В этих примерах фрагментов кода показано, как выполнять следующие задачи с помощью клиентской библиотеки Хранилища BLOB-объектов Azure для Python:
- Получение строки подключения
- Создание контейнера
- отправка больших двоичных объектов в контейнер;
- перечисление больших двоичных объектов в контейнере;
- скачивание больших двоичных объектов;
- Удаление контейнера
Получение строки подключения
Приведенный ниже код извлекает строку подключения к учетной записи хранения из переменной среды, созданной при изучении раздела Настройка строки подключения хранилища.
Добавьте этот код в блок try.
# 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')
Создание контейнера
Выберите имя нового контейнера. Приведенный ниже код добавляет к имени контейнера значение UUID, чтобы сделать это имя уникальным.
Важно!
Имена контейнеров должны состоять из знаков нижнего регистра. Дополнительные сведения об именовании контейнеров и больших двоичных объектов см. в статье Naming and Referencing Containers, Blobs, and Metadata (Именование контейнеров, больших двоичных объектов и метаданных и ссылка на них).
Создайте экземпляр класса BlobServiceClient, вызвав метод from_connection_string. Затем вызовите метод create_container, чтобы создать контейнер в учетной записи хранения.
Добавьте следующий код в конец блока try.
# 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)
Отправка больших двоичных объектов в контейнер
Приведенный ниже фрагмент кода:
- Создает локальный каталог для хранения файлов данных.
- Создает текстовый файл в локальном каталоге.
- Возвращает ссылку на объект BlobClient, вызывая метод get_blob_client для BlobServiceClient из раздела Создание контейнера.
- Передает локальный текстовый файл в большой двоичный объект, вызывая метод upload_blob.
Добавьте следующий код в конец блока try.
# 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)
Перечисление BLOB-объектов в контейнере
Выведите список больших двоичных объектов в контейнере, вызвав метод list_blobs. В этом случае в контейнер был добавлен лишь один большой двоичный объект, поэтому операция перечисления возвращает только его.
Добавьте следующий код в конец блока try.
print("\nListing blobs...")
# List the blobs in the container
blob_list = container_client.list_blobs()
for blob in blob_list:
print("\t" + blob.name)
Скачивание больших двоичных объектов
Скачайте созданный ранее большой двоичный объект, вызвав метод download_blob. Пример кода добавляет суффикс "DOWNLOAD" к имени файла, чтобы в локальной файловой системе можно было просмотреть оба файла.
Добавьте следующий код в конец блока try.
# 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'))
blob_client = blob_service_client.get_container_client(container= container_name)
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(blob.name).readall())
Удаление контейнера
Следующий код очищает созданные приложением ресурсы, полностью удаляя контейнер с помощью метода delete_container. Кроме того, при необходимости можно удалить локальные файлы.
Приложение приостанавливается для ввода пользователя, вызывая input(), перед удалением большого двоичного объекта, контейнера и локальных файлов. Перед удалением ресурсов убедитесь, что они были созданы правильно.
Добавьте следующий код в конец блока try.
# 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")
Выполнение кода
В этом приложении тестовый файл создается в локальной папке, а затем передается в Хранилище BLOB-объектов Azure. Затем пример выводит список больших двоичных объектов в контейнере и скачивает файл с новым именем. Теперь вы можете сравнить старый и новый файлы.
Перейдите в каталог, содержащий файл blob-quickstart-v12.py, а затем выполните указанную команду python, чтобы запустить приложение.
python blob-quickstart-v12.py
Вы должны увидеть выходные данные приложения, как показано ниже.
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
Прежде чем начать процесс удаления, проверьте наличие двух файлов в папке data. Вы можете открыть их и убедиться, что они идентичны.
После проверки файлов нажмите клавишу ВВОД, чтобы завершить работу с демонстрационной версией и удалить тестовые файлы.
Дальнейшие действия
В этом кратком руководстве вы узнали, как передавать и скачивать большие двоичные объекты, а также выводить их список с помощью Python.
Чтобы просмотреть примеры приложений для хранилища BLOB-объектов, перейдите к следующему разделу:
- Чтобы узнать больше, ознакомьтесь с клиентскими библиотеками службы хранилища Azure для Python.
- Учебники, примеры, краткие руководства и другую документацию можно найти на странице Azure для разработчиков Python.