python - 是否可以从 Azure Blob 存储容器中读取所有文件,并在使用 Python 读取后删除文件?
问题描述
我想从 Azure Blob 存储容器中读取所有文件,并将它们保存在我的本地计算机上。将它们保存在我的本地计算机上后,我想从 Blob 存储中删除它们。
我在堆栈上找到了这个解决方案。但是,这只是为了读取一个 blob 文件(您需要在其中指定文件名)。
# The example from stack, to read in 1 file.
from azure.storage.blob import BlockBlobService
block_blob_service = BlockBlobService(account_name='myaccount', account_key='mykey')
block_blob_service.get_blob_to_path('mycontainer', 'myblockblob', 'out-sunset.png')
解决方案
这实际上非常简单。您只需要列出 blob,然后单独下载每个 blob。
就像是:
from azure.storage.blob import BlockBlobService
block_blob_service = BlockBlobService(account_name='myaccount', account_key='mykey')
#list blobs in container
blobs = block_blob_service.list_blobs(container_name='mycontainer')
for blob in blobs:
#download each blob
block_blob_service.get_blob_to_path(container_name='mycontainer', blob_name=blob.name, file_path=blob.name)
#delete blob
#block_blob_service.delete_blob(container_name='mycontainer', blob_name=blob.name)
请注意,上面的代码假定您的 Blob 容器内的虚拟文件夹中没有 Blob,如果 Blob 容器中的虚拟文件夹内有 Blob,则会失败。您需要先在本地文件系统上创建一个目录。
推荐阅读
- c# - C# 如何使用查询语法在 Linq 选择语句中使用变量
- python - 转换 json 字典
- sql - 确定过去 30 天内某个特定字段发生更改的时间。如果在另一个表中找到插入记录
- java - 无法将 csv 文件中的百万条记录插入 MySql 数据库
- sql - 从排名靠前的项目中获取差异
- cmake - CMake:如何从环境中添加 include() 的搜索路径?
- .net - .net5“部署一个独立的应用程序”没有 ssl 的 localhost 证书,没有安装 dotnet
- c# - 将只读结构作为“in”参数传递?
- c - 如何从其他 C 程序访问共享对象(.so)中的全局变量?
- javascript - 发布请求失败后不返回错误 - axios、express、node.js