0

I've wrote the following code to upload a file into blob storage using Python:

blob_service_client = ContainerClient(account_url="https://{}.blob.core.windows.net".format(ACCOUNT_NAME),
                                          credential=ACCOUNT_KEY,
                                          container_name=CONTAINER_NAME)

blob_service_client.upload_blob("my_file.txt", open("my_file.txt", "rb"))

this works fine. I wonder how can I upload the entire folder with all files and sub folders in it while keeping the structure of my local folder intact?

Wiliam
  • 1,078
  • 10
  • 21

1 Answers1

2

After reproducing from my end I could able to achieve your requirement using os module. Below is the complete code that worked for me.

dir_path = r'<YOUR_LOCAL_FOLDER>'

for path, subdirs, files in os.walk(dir_path):
    for name in files:
        fullPath=os.path.join(path, name)
        print("FullPath : "+fullPath)
        file=fullPath.replace(dir_path,'')
        fileName=file[1:len(file)];
        print("File Name :"+fileName)
        
        # Create a blob client using the local file name as the name for the blob
        blob_service_client = ContainerClient(account_url=ACCOUNT_URL,
                                          credential=ACCOUNT_KEY,
                                          container_name=CONTAINER_NAME)

        print("\nUploading to Azure Storage as blob:\n\t" + fileName)
        blob_service_client.upload_blob(fileName, open(fullPath, "rb"))
        

Below is the folder structure in my local.

├───g.txt
├───h.txt
├───Folder1
    ├───z.txt
    ├───y.txt
├───Folder2
    ├───a.txt
    ├───b.txt
    ├───SubFolder1
        ├───c.txt
        ├───d.txt

RESULTS:

enter image description here

SwethaKandikonda
  • 7,513
  • 2
  • 4
  • 18