Azure: Ресурс не найден в blob_client

#azure #azure-active-directory #azure-functions #azure-blob-storage

#azure #azure-active-directory #azure-функции #azure-blob-хранилище

Вопрос:

Я пытаюсь удалить свой большой объект azure с помощью скрипта python, и для этого я использую BlobClient из библиотеки azure.storage.

Вот код, который я пытаюсь запустить:

 import json, sys, os, time
from azure.storage.blob import BlobServiceClient, PublicAccess, BlobClient


endpoint = os.environ['COMPUTER_VISION_ENDPOINT']
subscription_key = os.environ['COMPUTER_VISION_SUBSCRIPTION_KEY']

text_recognition_url = endpoint   "/vision/v3.0/read/analyze"

file_name = input("Enter the file name: ")
image_url = "https://textimage.blob.core.windows.net/handwritten-text/"   file_name

blob_client = BlobClient.from_blob_url(blob_url=image_url)

blob_client.delete_blob()
print("Done")

  

Хотя большой двоичный объект и контейнер существуют в учетной записи хранилища Azure, он выдает мне следующую ошибку:

 azure.core.exceptions.ResourceNotFoundError: The specified resource does not exist.
  

Где я ошибаюсь?

Какой может быть лучший способ удалить конкретный открытый большой двоичный объект с помощью скрипта python?

Комментарии:

1. Пожалуйста, не делайте так… Я обновлю ответ.

Ответ №1:

 import os
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

blob_service_client = BlobServiceClient.from_connection_string(os.getenv('str'))
container_client = blob_service_client.get_container_client("test")
blob_client = blob_service_client.get_blob_client("test", "test.txt")
blob_client.delete_blob()
  

Приведенный выше код отлично работает на моей стороне.(Вы можете заменить имя контейнера и большого двоичного объекта на динамическое значение.)

И взгляните на официальный документ:

https://learn.microsoft.com/en-us/python/api/azure-storage-blob/azure.storage.blob.blobserviceclient?view=azure-python

https://learn.microsoft.com/en-us/python/api/azure-storage-blob/azure.storage.blob.blobclient?view=azure-python#methods

Когда вы сталкиваетесь с NoneType object has no attribute 'rstrip' , это означает, что вы должны предоставить методу строку подключения.

Комментарии:

1. Спасибо, там было небольшое изменение: вместо os.getenv(‘str’) у меня сработало прямое предоставление значения строки подключения. Первый выдавал ошибку NoneType object has no attribute 'rstrip' .

2. @nipan09 Эта проблема должна возникать из-за того, что параметр в методе from_connection_string() равен нулю. Вы уже указали строку подключения? Он должен быть получен из этого места: i.stack.imgur.com/O6ZR6.png

3. Я уже установил эту строку подключения в своей переменной окружения, я думаю, именно поэтому это сработало.