繁体   English   中英

如何使用 Python 递归地将文件夹上传到 Azure blob 存储

[英]How to recursively upload folder to Azure blob storage with Python

我可以使用 Python 将单个文件上传到 Azure blob 存储。 但是对于具有多个包含数据的文件夹的文件夹,有没有办法可以尝试将具有相同目录的整个文件夹上传到 Azure?

说我有

文件夹
------子文件夹a
----------filea.txt
----------fileb.txt
------子文件夹b
------子文件夹c

我想把这个 FOLDERA 如上结构放到 Azure 中。 有什么提示吗?

没有内置任何内容,但您可以轻松地在代码中编写该功能(请参阅os.walk )。

另一种选择是使用 subprocess 模块调用 azcopy 命令行工具。

@Krumelur 几乎是对的,但在这里我想给出一个工作代码示例,并解释一些文件夹无法上传到 azure blob 存储。

1.代码示例:

from azure.storage.blob import BlockBlobService,PublicAccess
import os

def run_sample():
    account_name = "your_account_name"
    account_key ="your_account_key"
    block_blob_service = BlockBlobService(account_name, account_key)
    container_name ='test1'

    path_remove = "F:\\"
    local_path = "F:\\folderA"

    for r,d,f in os.walk(local_path):        
        if f:
            for file in f:
                file_path_on_azure = os.path.join(r,file).replace(path_remove,"")
                file_path_on_local = os.path.join(r,file)
                block_blob_service.create_blob_from_path(container_name,file_path_on_azure,file_path_on_local)            

# Main method.
if __name__ == '__main__':
    run_sample()

2.您应该记住,任何空文件夹都不能创建/上传到 azure blob 存储,因为 azure blob 存储中没有真正的“文件夹”。 文件夹或目录只是 blob 名称的一部分。 因此,如果文件夹中没有像 test.txt 这样的真正 blob 文件,就无法创建/上传空文件夹。 因此,在您的文件夹结构中,空文件夹 SUBFOLDERb 和 SUBFOLDERc 无法上传到 azure blob 存储。

测试结果如下,所有非空文件夹都上传到azure中的blob存储:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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