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
を取得して、BlobClient
のdownload_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
0 件のコメント:
コメントを投稿