简体   繁体   中英

How to upload the a folder into Azure blob storage while preserving the structure in Python?

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?

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:

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM