jar*_*yeo 7 azure-storage azure-storage-blobs python-3.x
我参考了 Microsoft 的适用于 Python 的 Azure Blob 存储客户端库 v12的快速入门指南。它详细说明了如何上传 blob,但我想删除 blob。这个答案建议使用:
from azure.storage.blob import BlobService
blob_service = BlobService(account_name=accountName, account_key=accountKey)
blob_service.delete_blob(container_name, blob_name)
Run Code Online (Sandbox Code Playgroud)
但是,我尝试过,但出现以下错误:
ImportError: cannot import name 'BlobService' from 'azure.storage.blob'
Run Code Online (Sandbox Code Playgroud)
另一个答案建议使用from azure.storage.blob import BlockBlobService,但我也得到了与ImportError上面相同的结果。
我搜索了 Stackoverflow 以解决上述错误,并遇到了这个答案,它建议使用旧版本的库 ( azure-storage) 和另一个建议安装整个azure库的答案,但我想改用最新的库。
如何使用最新的azure-storage-blob库上传文件并删除 blob ?或者,如果我是 2019 年的新用户,并且正在遵循上述快速入门指南,但我想使用azure-storage这里的许多答案推荐的旧库,我该怎么做?
jar*_*yeo 27
有两种上传和删除 blob 的方法,第一种使用新azure-storage-blob库 (2019),第二种使用旧azure-storage库 (2019 之前)。
如果您是 2019 年以后的新用户,请按照更新的快速入门指南使用方法 1 。
azure-storage-blob库(2019)azure-storage如果已经安装,请先卸载旧库,然后安装新azure-storage-blob库。使用pip3的Python 3或pipPython的2:
pip3 uninstall azure-storage
pip3 install azure-storage-blob
Run Code Online (Sandbox Code Playgroud)
根据您的 Python 版本,pip freeze或者pip3 freeze应该显示以下内容:
azure-common==1.1.23
azure-core==1.0.0
azure-nspkg==3.0.2
azure-storage-blob==12.0.0
Run Code Online (Sandbox Code Playgroud)
如果要使用同一客户端上传文件和删除 blob,请使用
ContainerClient. 文档可以在这里找到。
使用上传文件的代码ContainerClient:
pip3 uninstall azure-storage
pip3 install azure-storage-blob
Run Code Online (Sandbox Code Playgroud)
使用以下方法删除 blob 的代码ContainerClient:
azure-common==1.1.23
azure-core==1.0.0
azure-nspkg==3.0.2
azure-storage-blob==12.0.0
Run Code Online (Sandbox Code Playgroud)
或者,您可以
BlobServiceClient根据快速入门指南使用上传文件。
使用上传文件的代码BlobServiceClient:
from azure.storage.blob import ContainerClient
CONNECT_STR = ""
CONTAINER_NAME = ""
input_file_path = "/path/to/your/input_file.csv"
output_blob_name = "output_blob.csv"
container_client = ContainerClient.from_connection_string(conn_str=CONNECT_STR, container_name=CONTAINER_NAME)
# Upload file
with open(input_file_path, "rb") as data:
container_client.upload_blob(name=output_blob_name, data=data)
Run Code Online (Sandbox Code Playgroud)
azure-storage库(2019 年之前)azure-storage-blob如果已经安装,请先卸载新库,然后安装旧azure-storage库。使用pip3的Python 3或pipPython的2:
pip3 uninstall azure-storage-blob
pip3 install azure-storage
Run Code Online (Sandbox Code Playgroud)
根据您的 Python 版本,pip freeze或者pip3 freeze应该显示以下内容:
azure-common==1.1.23
azure-core==1.0.0
azure-nspkg==3.0.2
azure-storage==0.36.0
Run Code Online (Sandbox Code Playgroud)
我们可以使用
BlockBlobService客户端上传文件和删除 blob。
使用上传文件的代码BlockBlobService:
from azure.storage.blob import ContainerClient
CONNECT_STR = ""
CONTAINER_NAME = ""
blob_name = "output_blob.csv"
container_client = ContainerClient.from_connection_string(conn_str=CONNECT_STR, container_name=CONTAINER_NAME)
# Delete blob
container_client.delete_blob(blob=blob_name)
Run Code Online (Sandbox Code Playgroud)
使用以下方法删除 blob 的代码BlockBlobService:
from azure.storage.blob import BlobServiceClient
CONNECT_STR = ""
CONTAINER_NAME = ""
input_file_path = "/path/to/your/input_file.csv"
output_blob_name = "output_blob.csv"
blob_service_client = BlobServiceClient.from_connection_string(CONNECT_STR)
blob_client = blob_service_client.get_blob_client(container=CONTAINER_NAME, blob=output_blob_name)
# Upload file
with open(input_file_path, "rb") as data:
blob_client.upload_blob(data=data)
Run Code Online (Sandbox Code Playgroud)
正如在这个答案中提到的,azure-storage自 0.37.0 以来,库引入了重大更改。根据更改日志,不仅命名空间被更改,而且库也被拆分为 5 个不同的包:
尽管其他帖子上已经有很多答案,但我想指出,对于在 2019 年以后尝试此方法的新用户来说,尝试为库找到正确的代码很复杂,因为 Stackoverflow 上提供的许多答案(如果不是大多数)仍然是参考旧库azure-storage,但新用户遵循 Microsoft 于 2019 年 5 月更新的新教程,该教程使用新库azure-storage-blob。寻求帮助的新用户会在使用旧azure-storage库时无意中发现旧答案,但这些答案对他们不起作用。
| 归档时间: |
|
| 查看次数: |
7018 次 |
| 最近记录: |