使用 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 文件存储开发

以下代码示例使用 FileService 对象来创建共享(如果该共享不存在)。

file_service.create_share('myshare')

创建目录

相关文章:使用 Python 进行 Azure 文件存储开发

可以将文件置于子目录中,不必将其全部置于根目录中,以便对存储进行有效的组织。

以下代码会在根目录下创建名为 sampledir 的子目录。

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

上传文件

相关文章:使用 Python 进行 Azure 文件存储开发

本部分会介绍如何将文件从本地存储上传到 Azure 文件存储。

Azure 文件共享至少包含文件可以驻留的根目录。 若要创建文件并上传数据,请使用以下任一方法:

这些方法用于在数据大小超过 64 MiB 时执行必要的分块。

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 文件存储开发

若要列出共享中的文件和目录,请使用 list_directories_and_files 方法。 此方法会返回一个生成器。 以下代码将共享中每个文件和目录的名称输出到控制台。

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

下载文件

相关文章:使用 Python 进行 Azure 文件存储开发

若要从文件下载数据,请使用以下任一方法:

这些方法用于在数据大小超过 64 MiB 时执行必要的分块。

以下示例演示如何使用 get_file_to_path 下载 myfile 文件的内容,并将其存储到 out-sunset.png 文件。

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

创建共享快照

相关文章:使用 Python 进行 Azure 文件存储开发

可以创建整个文件共享的时点副本。

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 文件存储开发

可以为特定的共享列出所有快照。

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

浏览共享快照

相关文章:使用 Python 进行 Azure 文件存储开发

可以浏览每个共享快照来检索相应时间点的文件和目录。

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

从共享快照获取文件

相关文章:使用 Python 进行 Azure 文件存储开发

可以从共享快照下载文件。 这使你可以还原文件的早期版本。

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 文件存储开发

可以删除单个共享快照。

file_service.delete_share(share_name, snapshot=snapshot_id)

删除文件

相关文章:使用 Python 进行 Azure 文件存储开发

若要删除文件,请调用 delete_file

以下代码示例展示了如何删除文件:

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

共享快照存在时,删除共享

相关文章:使用 Python 进行 Azure 文件存储开发

无法删除包含快照的共享,除非先删除所有快照。

以下代码示例展示了如何删除共享内容:

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