🐡

Azure Blob Storageのコンテナーのデータをpythonを使ってExportする

2024/04/10に公開

やること

Azure Blob Storageのコンテナーのデータをpythonを使ってExportする

そもそも

Azure Blob Storageのコンテナーのデータは、Azure Storage Explorerを使えばExportできます。pythonで自動化できないかなと思ったので検証しました。

https://zenn.dev/headwaters/articles/b80bad5b05e781

code

from azure.storage.blob import BlobServiceClient
import os

# BlobServiceClient を初期化
connection_string = "接続文字列"
blob_service_client = BlobServiceClient.from_connection_string(connection_string)

# ストレージアカウント内の全てのコンテナーをリスト
all_containers = blob_service_client.list_containers()

for container in all_containers:
    container_name = container.name
    print(f"コンテナー '{container_name}' のBlobをダウンロード中...")

    # ローカルにコンテナー名のディレクトリを作成
    local_container_path = os.path.join("./", container_name)
    os.makedirs(local_container_path, exist_ok=True)

    # コンテナー内のBlobをリストし、ダウンロード
    container_client = blob_service_client.get_container_client(container)
    for blob in container_client.list_blobs():
        blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob.name)
        download_file_path = os.path.join(local_container_path, blob.name)
        
        # ディレクトリ構造を維持するために必要なディレクトリを作成
        os.makedirs(os.path.dirname(download_file_path), exist_ok=True)

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

    print(f"コンテナー '{container_name}' のダウンロード完了")

print("全てのコンテナーのダウンロードが完了しました")
ヘッドウォータース

Discussion