Python バージョン 2 クライアント ライブラリを使用する Azure ファイル共有のコード サンプル

この記事では、Python 用の Azure ファイル共有クライアント ライブラリのバージョン 2 を使用するコード サンプルを示します。

2023 年 3 月 31 日に、現在の Azure SDK ガイドラインに準拠していない Azure SDK ライブラリのサポートは廃止されました。 新しい Azure SDK ライブラリは、一貫したエクスペリエンスを促進し、セキュリティ態勢を強化するために定期的に更新されます。 新しい機能と重要なセキュリティ更新を利用するために、新しい Azure SDK ライブラリに移行することをお勧めします。

以前のライブラリは 2023 年 3 月 31 日以降も引き続き使用できますが、Microsoft から公式のサポートと更新情報は提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。

前提条件

pip install を使用して次のパッケージをインストールします。

pip install azure-storage-file

次の import ステートメントを追加します。

from azure.storage.file import FileService

Azure ファイル共有を作成する

関連記事:Python での Azure Files 用の開発

次のコード サンプルでは、共有が存在しない場合は FileService オブジェクトを使用してそれが作成されます。

file_service.create_share('myshare')

ディレクトリを作成する

関連記事:Python での Azure Files 用の開発

ルート ディレクトリにすべてのファイルを置くのではなく、サブディレクトリ内に置いてストレージを整理することができます。

下のコードはルート ディレクトリの下に sampledir という名前のサブディレクトリを作成します。

file_service.create_directory('myshare', 'sampledir')

ファイルをアップロードする

関連記事:Python での Azure Files 用の開発

このセクションでは、ローカル ストレージから Azure Files にファイルをアップロードする方法について説明します。

Azure ファイル共有には、少なくともファイルを配置できるルート ディレクトリが含まれます。 ファイルを作成してデータをアップロードするには、次のいずれかのメソッドを使用します。

これらのメソッドは、データのサイズが 64 MB を超過した場合に必要なチャンクを実行します。

create_file_from_path は、指定したパスからファイルの内容をアップロードし、create_file_from_stream は既に開いているファイルまたはストリームから内容をアップロードします。 create_file_from_bytes はバイト配列をアップロードし、create_file_from_text は指定したエンコーディング (既定値から UTF-8) を使って、指定したテキスト値をアップロードします。

次の例では、sunset.png ファイルの内容を myfile ファイルにアップロードします。

from azure.storage.file import ContentSettings
file_service.create_file_from_path(
    'myshare',
    None,  # We want to create this file in the root directory, so we specify None for the directory_name
    'myfile',
    'sunset.png',
    content_settings=ContentSettings(content_type='image/png'))

Azure ファイル共有のファイルとディレクトリを列挙する

関連記事:Python での Azure Files 用の開発

共有内のファイルとディレクトリを一覧表示するには、list_directories_and_files メソッドを使用します。 このメソッドは、ジェネレーターを返します。 次のコードでは、共有内の各ファイルとディレクトリの 名前 (name) をコンソールに出力しています。

generator = file_service.list_directories_and_files('myshare')
for file_or_dir in generator:
    print(file_or_dir.name)

ファイルをダウンロードする

関連記事:Python での Azure Files 用の開発

ファイルからデータをダウンロードするには、次のいずれかのメソッドを使用します。

これらのメソッドは、データのサイズが 64 MB を超過した場合に必要なチャンクを実行します。

次の例は、get_file_to_path を使用して myfile ファイルの内容をダウンロードし、out-sunset.png ファイルに格納する方法を示しています。

file_service.get_file_to_path('myshare', None, 'myfile', 'out-sunset.png')

共有スナップショットを作成する

関連記事:Python での Azure Files 用の開発

ファイル共有全体の特定の時点のコピーを作成できます。

snapshot = file_service.snapshot_share(share_name)
snapshot_id = snapshot.snapshot

メタデータでの共有スナップショットの作成

metadata = {"foo": "bar"}
snapshot = file_service.snapshot_share(share_name, metadata=metadata)

共有とスナップショットの一覧表示

関連記事:Python での Azure Files 用の開発

特定の共有のすべてのスナップショットを一覧表示できます。

shares = list(file_service.list_shares(include_snapshots=True))

共有スナップショットの参照

関連記事:Python での Azure Files 用の開発

各共有スナップショットを参照して、その時点のファイルとディレクトリを取得できます。

directories_and_files = list(
    file_service.list_directories_and_files(share_name, snapshot=snapshot_id))

共有スナップショットからのファイルの取得

関連記事:Python での Azure Files 用の開発

共有スナップショットからファイルをダウンロードできます。 これにより、以前のバージョンのファイルを復元できます。

with open(FILE_PATH, 'wb') as stream:
    file = file_service.get_file_to_stream(
        share_name, directory_name, file_name, stream, snapshot=snapshot_id)

単一の共有スナップショットの削除

関連記事:Python での Azure Files 用の開発

単一の共有スナップショットを削除できます。

file_service.delete_share(share_name, snapshot=snapshot_id)

ファイルを削除する

関連記事:Python での Azure Files 用の開発

ファイルを削除するには、delete_file を呼び出します。

次のコード例は、ファイルを削除する方法を示しています。

file_service.delete_file('myshare', None, 'myfile')

共有スナップショットが存在する場合の共有の削除

関連記事:Python での Azure Files 用の開発

スナップショットが含まれる共有は、すべてのスナップショットを最初に削除しない限り削除できません。

次のコード例は、共有を削除する方法を示しています。

file_service.delete_share(share_name, delete_snapshots=DeleteSnapshot.Include)