pythonpython-3.xazureazure-blob-storageazure-container-service

Uploading flat files to Azure Storage Account


I was following the instructions from this link. I did all the steps for uploading the file to the storage account starting from running this command

setx AZURE_STORAGE_CONNECTION_STRING "12334455"

Basically, I just copied the code from the Microsoft site for uploading files. But after doing all the requirements as given on the Microsoft site I am still facing some errors. The code I wrote is

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

try:
    print("Azure Blob Storage v" + __version__ + " - Python quickstart sample")
    # local_path = "C:\Users\shang\Desktop\Trial"
    # os.mkdir(local_path)
    #
    # # Create a file in the local data directory to upload and download
    # local_file_name = str(uuid.uuid4()) + ".txt"
    # upload_file_path = os.path.join(local_path, local_file_name)
    #
    # # Write text to the file
    # file = open(upload_file_path, 'w')
    # file.write("Hello, World!")
    # file.close()
    upload_file_path = r"C:\Users\shang\Desktop\Trial\Trial.txt"
    local_file_name = "Trial.txt"
    # Create a blob client using the local file name as the name for the blob
    blob_client = BlobServiceClient.get_blob_client(container="testingnlearning", blob=local_file_name)

    print("\nUploading to Azure Storage as blob:\n\t" + local_file_name)

    # Upload the created file
    with open(upload_file_path, "rb") as data:
        blob_client.upload_blob(data)
        # Quick start code goes here

except Exception as ex:
    print('Exception:')
    print(ex)


Now while running the code I am getting the error

TypeError                                 Traceback (most recent call last)
<ipython-input-3-3a6b42061e89> in <module>
----> 1 blob_client = BlobServiceClient.get_blob_client(container="testingnlearning", blob="Trial.txt")

TypeError: get_blob_client() missing 1 required positional argument: 'self'

Now I don't know of what I am doing wrong. It will be really wonderful if you can tell me on how to upload text files to Azure Storage container.

Thanks in advance.


Solution

  • The reason you're getting the error is because you are not creating an instance of BlobServiceClient and using it as static here:

    blob_client = BlobServiceClient.get_blob_client(container="testingnlearning", blob=local_file_name)
    

    What you would want to do is create an instance of BlobServiceClient and then use that instance. Something like:

    blob_service_client = BlobServiceClient.from_connection_string(connect_str)
    blob_client = blob_service_client.get_blob_client(container="testingnlearning", blob=local_file_name)