Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Set_Blob_元数据和自位置参数_Python_Azure Storage Blobs - Fatal编程技术网

Python Set_Blob_元数据和自位置参数

Python Set_Blob_元数据和自位置参数,python,azure-storage-blobs,Python,Azure Storage Blobs,最后一天我一直在玩弄Python,试图了解Azure Blob存储的好处及其工作原理。我尝试使用以下脚本向现有blob添加元数据: blob_client.set_blob_metadata( account_url = "https://storage01.blob.core.windows.net/", container_name="container",

最后一天我一直在玩弄Python,试图了解Azure Blob存储的好处及其工作原理。我尝试使用以下脚本向现有blob添加元数据:

blob_client.set_blob_metadata(
                        account_url = "https://storage01.blob.core.windows.net/",
                        container_name="container",
                        blob_name="template.json",
                        metadata={'metadata1': '1111'})
但是它失败了,错误消息为:TypeError:set_blob_metadata()缺少1个必需的位置参数:“self”


我不知道为什么?我在Github上检查了几个样本

没有你的完整剧本,我只能猜测。 您必须创建
BlobClient
的实例才能调用
set\u blob\u metadata
方法。 这应该是这样的:

from azure.storage.blob import BlobClient
blob_client = BlobClient.from_blob_url(blob_url="https://account.blob.core.windows.net/container/blob-name")
blob_client.set_blob_metadata(
                        account_url = "https://storage01.blob.core.windows.net/",
                        container_name="container",
                        blob_name="template.json",
                        metadata={'metadata1': '1111'})
我猜您只是创建了一个
BlobClient
的引用,而不是一个实例,如下所示:

从azure.storage.blob导入BlobClient
blob_client=blob客户端#这是错误的
blob_client.set_blob_元数据(
帐户url=”https://storage01.blob.core.windows.net/",
container_name=“container”,
blob_name=“template.json”,
元数据={'metadata1':'1111'})

是的,这就是问题所在。但不知何故,它仍然显示了一条错误消息:未找到资源。通过打开URL对其进行双重检查,最终得到了SAS签名,这起到了作用。

from azure.storage.blob import BlobClient

sas_url = "https://scalesetdiag.blob.core.windows.net/container/document.txt?sv=2019-02-02&ss=bfqt&srt=sco&sp=rwdlacup&se=2020-01-01T17:09:21Z&st=2019-12-28T09:09:21Z&spr=https,http&" blob_client = BlobClient.from_blob_url(sas_url)

blob_client.set_blob_metadata( metadata={'metadata1': '1111'})


从azure.storage.blob导入BlobClient

sas_url=“” blob\u client=BlobClient.from\u blob\u url(sas\u url)

blob_client.set_blob_元数据( 元数据={'metadata1':'1111'})