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)