答案于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个不同的包:
- azure-storage-common
- azure-storage-blob
- azure-storage-file
- azure-storage-queue
- azure-storage-nspkg
尽管其他帖子已经提供了许多答案,但我想指出的是,对于从2019年开始尝试使用该功能的新用户而言,由于此处提供了很多(如果不是大多数)答案,那么试图找到该库的正确代码变得很复杂Stackoverflow上的版本仍参考旧库azure-storage
,但是新用户遵循Microsoft在2019年5月更新的新教程,该教程改用新的azure-storage
。寻求帮助的新用户会在不经意间使用旧的azure-storage-blob
库找到旧的答案,但是这些问题对他们没有用。
本文链接:https://www.f2er.com/3086564.html