使用azure-storage-blob或azure-storage

我指的是microsoft的Quick Start guide,适用于适用于Python的Azure Blob存储客户端库v12。它详细说明了如何上传Blob,但我想删除Blob。 This answer建议使用:

from azure.storage.blob import BlobService

blob_service = BlobService(account_name=accountName,account_key=accountKey)
blob_service.delete_blob(container_name,blob_name)

但是,我尝试过但出现以下错误:

ImportError: cannot import name 'BlobService' from 'azure.storage.blob'

Another answer建议使用from azure.storage.blob import BlockBlobService,但我也得到与上面相同的ImportError

我搜索了Stackoverflow以解决上述错误,并遇到了this answer(建议使用旧版本的库(azure-storage)和another answer(建议安装整个{{1}) }库,但我想改用最新的库。

如何使用最新的azure库上传文件并删除Blob?另外,如果我是2019年的新用户,并且正在遵循《快速入门指南》,但是我想使用旧的azure-storage-blob库,这里的许多答案都建议这样做,那么我该怎么做?

ft2015250 回答:使用azure-storage-blob或azure-storage

答案于2019年更新

有两种上传和删除Blob的方法,一种是使用新的azure-storage库(2019年),另一种是使用旧的azure-storage-blob库(2019年之前)。

  

如果您是updated Quick Start guide之后的2019年以后的新用户,请使用方法1。


方法1.使用新的azure-storage库(2019)

如果已安装旧的azure-storage-blob库,请先将其卸载,然后再安装新的azure-storage库。将azure-storage-blob用于Python 3或pip3用于Python 2:

pip

取决于您的Python版本,pip3 uninstall azure-storage pip3 install azure-storage-blob pip freeze应该显示以下内容:

pip3 freeze
  

如果要使用同一客户端上载文件并删除Blob,请使用azure-common==1.1.23 azure-core==1.0.0 azure-nspkg==3.0.2 azure-storage-blob==12.0.0 。可以在here中找到该文档。

使用ContainerClient上传文件的代码:

ContainerClient

使用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) 删除blob的代码:

ContainerClient
  

或者,您可以使用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) 按照Quick Start guide上传文件。

使用BlobServiceClient上传文件的代码:

BlobServiceClient

方法2.使用旧的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) 库(2019年之前)

如果已安装新的azure-storage库,请先将其卸载,然后再安装旧的azure-storage-blob库。将azure-storage用于Python 3或pip3用于Python 2:

pip

取决于您的Python版本,pip3 uninstall azure-storage-blob pip3 install azure-storage pip freeze应该显示以下内容:

pip3 freeze
  

我们可以使用azure-common==1.1.23 azure-core==1.0.0 azure-nspkg==3.0.2 azure-storage==0.36.0 客户端上传文件并删除Blob。

使用BlockBlobService上传文件的代码:

BlockBlobService

使用from azure.storage.blob import BlockBlobService AZURE_STORAGE_ACCOUNT_NAME = "" AZURE_STORAGE_ACCOUNT_KEY = "" CONTAINER_NAME = "" input_file_path = "/path/to/your/input_file.csv" output_blob_name = "output_blob.csv" block_blob_service = BlockBlobService(account_name=AZURE_STORAGE_ACCOUNT_NAME,account_key=AZURE_STORAGE_ACCOUNT_KEY) # Upload file block_blob_service.create_blob_from_path(CONTAINER_NAME,output_blob_name,input_file_path) 删除blob的代码:

BlockBlobService

背景

如本answer所述,自0.37.0起,from azure.storage.blob import BlockBlobService AZURE_STORAGE_ACCOUNT_NAME = "" AZURE_STORAGE_ACCOUNT_KEY = "" CONTAINER_NAME = "" blob_name = "output_blob.csv" block_blob_service = BlockBlobService(account_name=AZURE_STORAGE_ACCOUNT_NAME,account_key=AZURE_STORAGE_ACCOUNT_KEY) # Delete blob block_blob_service.delete_blob(CONTAINER_NAME,blob_name) 库中引入了重大更改。根据{{​​3}}的说法,不仅更改了名称空间,还将该库分为5个不同的包:

  1. azure-storage-common
  2. azure-storage-blob
  3. azure-storage-file
  4. azure-storage-queue
  5. azure-storage-nspkg

尽管其他帖子已经提供了许多答案,但我想指出的是,对于从2019年开始尝试使用该功能的新用户而言,由于此处提供了很多(如果不是大多数)答案,那么试图找到该库的正确代码变得很复杂Stackoverflow上的版本仍参考旧库azure-storage,但是新用户遵循Microsoft在2019年5月更新的新教程,该教程改用新的azure-storage。寻求帮助的新用户会在不经意间使用旧的azure-storage-blob库找到旧的答案,但是这些问题对他们没有用。

本文链接:https://www.f2er.com/3086564.html

大家都在问