【问题标题】:How to recursively upload folder to Azure blob storage with Python如何使用 Python 递归地将文件夹上传到 Azure Blob 存储
【发布时间】:2019-10-16 14:49:32
【问题描述】:

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

说我有

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

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

【问题讨论】:

    标签: python azure blobstorage


    【解决方案1】:

    @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存储中:

    【讨论】:

    • 非常感谢!这就是我被卡住的地方:replace(path_remove,"")
    • 很高兴它有帮助:)
    • 是否有类似的方式使用 BlobServiceClient 将文件夹上传到 Blob? @IvanYang
    • @liamsuma,我认为这是可能的。能否请您提出一个问题,然后让我知道网址?
    • 感谢您的宝贵时间和回复。我将发布一个问题,其网址链接在这里
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-04
      • 2021-06-20
      • 2021-04-30
      • 1970-01-01
      • 2019-12-01
      • 2023-03-25
      • 2019-08-13
      • 2019-04-13
      相关资源
      最近更新 更多