PythonでAzure Blobのファイル一覧取得・ダウンロードをする

2021年3月29日月曜日

Python

t f B! P L

Python + Anaconda環境で、AzureのBlobストレージに格納されているファイルの一覧を取得する方法です。

azure-storage-blob

PythonからAzure Blobストレージにアクセスする場合は、Microsoftが公開している「azure-storage-blob」パッケージを使うのが便利で、この記事でも「azure-storage-blob」を使った方法でBlobのリストを取得する方法を解説します。

まずた次の方法でインストールしておきましょう。

pipでインストール

pip install azure-storage-blob

condaでインストール

「azure-storage-blob」は、Anacondaデフォルトのリポジトリには含まれないため、conda-forgeからインストールします。もし自分の環境に conda-forge のリポジトリが追加されていない場合は、次のコマンドでリポジトリの追加ができます。

$ conda config --append channels conda-forge

インストールは次のコマンドを入力します。

conda install -c conda-forge azure-storage-blob

blobファイル一覧の取得

では、さっそく Azure Blob ストレージ のファイル一覧を取得するコードを書いていきます。

新しくPythonのコードを作成し、次のコードを打ち込みます。<接続文字列>は Azure ポータル画面から確認ができるので、それをコピーします。

<コンテナー名>には、ファイルの一覧を取得するコンテナ名を設定します。

import os, uuid
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

try:
  connect_str = "<接続文字列>"
  blob_service_client = BlobServiceClient.from_connection_string(connect_str)
  container_name = "<コンテナー名>"
  container_client = blob_service_client.get_container_client(container_name)

  blob_list = container_client.list_blobs()
  for blob in blob_list:
    print("\t" + blob.name)

except Exception as ex:
  print('Exception:')
  print(ex)

パスの絞り込み

コンテナ内のすべてのファイルではなく、指定したパス配下に存在するファイルのみ一覧で取得したい場合は、次のようにlist_blobsメソッドの引数で、前方一致でフィルタリングするパスを指定します。

  blob_list = container_client.list_blobs("path/to/blob")

blobのダウンロード

BLOBのダウンロードは、BLOBのファイルパスを指定してBlobClientを取得して、BlobClientdownload_blob関数より行います。

blob_client = container_client.get_blob_client("path/to/azure/blob")

with open("/path/to/local", "wb") as download_file:
  download_file.write(blob_client.download_blob().readall())

文字コードを指定してテキストコンテンツをダウンロード

テキストコンテンツを文字コードを指定してダウンロードする場合はcontent_as_text関数を使います。

blob_client = container_client.get_blob_client("path/to/azure/blob")
blob_client.content_as_text(max_concurrency=1, encoding='UTF-8')

azure-storage-blobを使えば楽々

Pythonの「azure-storage-blob」パッケージを使用して、Azure Blobストレージのファイル一覧を取得する方法を解説しました。

他にも、コンテナーの作成・削除や、Blobのダウンロードなども少ないコードで容易に実装が可能です。

参考リンク

blob Package
https://docs.microsoft.com/ja-jp/python/api/azure-storage-blob/azure.storage.blob?view=azure-python

クイック スタート:Python v12 SDK で BLOB を管理する
https://docs.microsoft.com/ja-jp/azure/storage/blobs/storage-quickstart-blobs-python

スポンサーリンク

QooQ