Hızlı başlangıç: Python V12 SDK ile Blobları yönetme

Bu hızlı başlangıçta, Python kullanarak blob 'ları yönetmeyi öğreneceksiniz. Blob 'lar, görüntüler, belgeler, akış ortamları ve arşiv verileri gibi büyük miktarlarda metin veya ikili veri içerebilen nesnelerdir. Blobları karşıya yükleyebilir, indirebilir ve listetireceksiniz ve kapsayıcı oluşturup sileceksiniz.

Daha fazla kaynak:

Önkoşullar

Ayarlanıyor

bu bölümde, bir projeyi Python için v12 istemci kitaplığı Depolama Azure Blob ile çalışacak şekilde hazırlama adımları gösterilmektedir.

Proje oluşturma

BLOB-QuickStart-V12 adlı bir Python uygulaması oluşturun.

  1. Konsol penceresinde (cmd, PowerShell veya Bash gibi), proje için yeni bir dizin oluşturun.

    mkdir blob-quickstart-v12
    
  2. Yeni oluşturulan BLOB-hızlı başlangıç-V12 dizinine geçiş yapın.

    cd blob-quickstart-v12
    
  3. BLOB-QuickStart-V12 dizininde, veri adlı başka bir dizin oluşturun. Bu dizin, blob veri dosyalarının oluşturulup depolanacağı yerdir.

    mkdir data
    

Paketi yükler

hala uygulama dizininde, komutunu kullanarak Python paketi için Azure Blob Depolama istemci kitaplığı ' nı yükleyebilirsiniz pip install .

pip install azure-storage-blob

bu komut, Python paketi için Azure Blob Depolama istemci kitaplığı ve bağımlı olduğu tüm kitaplıkları yükleme. Bu durumda, yalnızca Python için Azure çekirdek kitaplığı vardır.

Uygulama çerçevesini ayarlama

Proje dizininden:

  1. Kod Düzenleyicinizde yeni bir metin dosyası açın

  2. importDeyim Ekle

  3. Temel özel durum işleme dahil olmak üzere programın yapısını oluşturma

    Kod şu şekildedir:

    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. BLOB-QuickStart-V12 dizinine yeni dosyayı BLOB-QuickStart-v12.py olarak kaydedin.

Azure portalından kimlik bilgilerinizi kopyalama

örnek uygulama Azure Depolama istek yaptığında yetkilendirilmiş olması gerekir. Bir isteği yetkilendirmek için, depolama hesabı kimlik bilgilerinizi uygulamaya bağlantı dizesi olarak ekleyin. Depolama hesabı kimlik bilgilerinizi görüntülemek için aşağıdaki adımları izleyin:

  1. Azure Portal’ında oturum açın.

  2. Depolama hesabınızı bulun.

  3. Depolama hesabı menü bölmesinde, güvenlik + ağ altında, erişim anahtarları' nı seçin. Burada, her anahtar için hesap erişim anahtarlarını ve tüm bağlantı dizesini görüntüleyebilirsiniz.

    Erişim anahtarı ayarlarının Azure portal nerede olduğunu gösteren ekran görüntüsü

  4. Erişim tuşları bölmesinde, anahtarları göster' i seçin.

  5. KEY1 bölümünde bağlantı dizesi değerini bulun. Bağlantı dizesini kopyalamak için Panoya Kopyala simgesini seçin. Bir sonraki bölümde bağlantı dizesi değerini bir ortam değişkenine eklersiniz.

    Azure portalından bağlantı dizesinin kopyalanmasını gösteren ekran görüntüsü

Depolama bağlantı dizelerinizi yapılandırma

Bağlantı dizesini kopyaladıktan sonra, uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın. Ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminizin yönergelerini izleyin. <yourconnectionstring>Gerçek bağlantı dizeniz ile değiştirin.

Windows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

ortam değişkenini Windows ekledikten sonra, komut penceresinin yeni bir örneğini başlatmanız gerekir.

Linux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

Programları yeniden Başlat

Ortam değişkenini ekledikten sonra, ortam değişkenini okumak için gereken tüm çalışan programları yeniden başlatın. Örneğin, devam etmeden önce geliştirme ortamınızı veya düzenleyiciyi yeniden başlatın.

Nesne modeli

Azure Blob Depolama, büyük miktarlarda yapılandırılmamış verileri depolamak için iyileştirilmiştir. Yapılandırılmamış veriler, metin veya ikili veriler gibi belirli bir veri modeline veya tanımına bağlı olmayan bir veri. BLOB depolama üç tür kaynak sunar:

  • Depolama hesabı
  • Depolama hesabındaki bir kapsayıcı
  • Kapsayıcıda bir blob

Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir.

BLOB depolama mimarisi diyagramı

Şu kaynaklarla etkileşim kurmak için aşağıdaki Python sınıflarını kullanın:

  • BlobServiceClient: BlobServiceClient sınıfı, Azure Depolama kaynaklarını ve blob kapsayıcılarını değiştirmenize olanak sağlar.
  • containerclient: ContainerClient sınıfı, Azure Depolama kapsayıcılarını ve bunların bloblarını değiştirmenize olanak sağlar.
  • blobclient: BlobClient sınıfı, Azure Depolama bloblarını değiştirmenize olanak sağlar.

Kod örnekleri

bu örnek kod parçacıkları, Python için Azure Blob Depolama istemci kitaplığı ile aşağıdaki görevlerin nasıl yapılacağını gösterir:

Bağlantı dizesini alma

Aşağıdaki kod, depolama bağlantı dizesini yapılandırma bölümünde oluşturulan ortam değişkeninden depolama hesabı bağlantı dizesini alır.

Bu kodu bloğunun içine ekleyin 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')

Kapsayıcı oluşturma

Yeni kapsayıcı için bir ad belirleyin. Aşağıdaki kod, benzersiz olduğundan emin olmak için kapsayıcı adına bir UUID değeri ekler.

Önemli

Kapsayıcı adlarının küçük harfle yazılması gerekir. Kapsayıcıları ve blobları adlandırma hakkında daha fazla bilgi için bkz. Kapsayıcıları, Blobları ve Meta Verileri Adlandırma ve Bunlara Başvurma.

From_connection_string yöntemini çağırarak BlobServiceClient sınıfının bir örneğini oluşturun. Ardından, depolama hesabınızda kapsayıcıyı gerçekten oluşturmak için create_container yöntemini çağırın.

Bu kodu bloğunun sonuna ekleyin 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)

blob 'ları bir kapsayıcıya Upload

Aşağıdaki kod parçacığı:

  1. Veri dosyalarını tutmak için yerel bir dizin oluşturur.
  2. Yerel dizinde bir metin dosyası oluşturur.
  3. Kapsayıcı oluşturma bölümünde BlobServiceClient üzerinde Get_blob_client yöntemini çağırarak bir blobclient nesnesine bir başvuru alır.
  4. Upload_blob yöntemini çağırarak yerel metin dosyasını bloba yükler.

Bu kodu bloğunun sonuna ekleyin 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)

Kapsayıcıdaki blobları listeleme

List_blobs yöntemini çağırarak kapsayıcıdaki Blobları listeleyin. Bu durumda, kapsayıcıya yalnızca bir blob eklenmiş, bu nedenle listeleme işlemi yalnızca bir BLOB döndürüyor.

Bu kodu bloğunun sonuna ekleyin 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)

Blob’ları indirme

Download_blob yöntemini çağırarak önceden oluşturulmuş blobu indirin. Örnek kod, yerel dosya sisteminde her iki dosyayı da görebilmeniz için dosya adına "ındır" adlı bir sonek ekler.

Bu kodu bloğunun sonuna ekleyin 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'))
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())

Kapsayıcı silme

Aşağıdaki kod, delete_container yöntemi kullanılarak kapsayıcının tamamını kaldırarak uygulamanın oluşturduğu kaynakları temizler. Ayrıca, isterseniz yerel dosyaları silebilirsiniz.

Uygulama, input() BLOB, kapsayıcı ve yerel dosyaları silmeden önce çağırarak kullanıcı girişi için duraklatılır. Kaynakların silinmeden önce doğru şekilde oluşturulduğunu doğrulayın.

Bu kodu bloğunun sonuna ekleyin 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")

Kodu çalıştırma

bu uygulama yerel klasörünüzde bir sınama dosyası oluşturur ve Azure Blob Depolama yükler. Örnek daha sonra kapsayıcıdaki Blobları listeler ve dosyayı yeni bir adla indirir. Eski ve yeni dosyaları karşılaştırabilirsiniz.

BLOB-QuickStart-v12.py dosyasını içeren dizine gidin ve python uygulamayı çalıştırmak için aşağıdaki komutu yürütün.

python blob-quickstart-v12.py

Uygulamanın çıktısı aşağıdaki örneğe benzer:

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

Temizleme işlemine başlamadan önce, iki dosya için veri klasörünüzü kontrol edin. Bunları açabilir ve aynı olduğunu gözlemleyebilirsiniz.

Dosyaları doğruladıktan sonra, test dosyalarını silmek ve tanıtımı sona almak için ENTER tuşuna basın.

Sonraki adımlar

Bu hızlı başlangıçta Python kullanarak blobları karşıya yükleme, indirme ve listele hakkında daha fazla bilgiye yer vediniz.

Blob depolama örnek uygulamalarını görmek için devam edin: