![](/img/trans.png)
[英]How to upload the a folder into Azure blob storage while preserving the structure in Python?
[英]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.