如何使用 Python 将文件夹递归上传到 Azure blob 存储
How to recursively upload folder to Azure blob storage with Python
我可以使用 Python 将单个文件上传到 Azure blob 存储。但是对于包含多个包含数据的文件夹的文件夹,有没有办法尝试将具有相同目录的整个文件夹上传到 Azure?
说我有
弗尔德拉
------SUBFOLDERa
----------filea.txt
----------fileb.txt
------子文件夹b
------SUBFOLDERc
我想把这个 FOLDERA 作为上面的结构放到 Azure 中。
有什么提示吗?
没有任何内置功能,但您可以轻松地在代码中编写该功能(请参阅 os.walk
)。
另一种选择是使用子进程模块调用 azcopy 命令行工具。
@Krumelur 几乎是正确的,但在这里我想给出一个工作代码示例,并解释一些文件夹无法上传到 azure blob 存储。
1.Code 示例:
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.You 应该记住,不能创建/上传任何空文件夹到 azure blob 存储,因为 azure blob 存储中没有真正的 "folder"。文件夹或目录只是 blob 名称的一部分。因此,如果文件夹中没有像 test.txt 这样的真正的 blob 文件,就无法 create/upload 一个空文件夹。因此在您的文件夹结构中,空文件夹 SUBFOLDERb 和 SUBFOLDERc 无法上传到 azure blob 存储。
测试结果如下,所有非空文件夹都上传到azure中的blob存储:
我可以使用 Python 将单个文件上传到 Azure blob 存储。但是对于包含多个包含数据的文件夹的文件夹,有没有办法尝试将具有相同目录的整个文件夹上传到 Azure?
说我有
弗尔德拉
------SUBFOLDERa
----------filea.txt
----------fileb.txt
------子文件夹b
------SUBFOLDERc
我想把这个 FOLDERA 作为上面的结构放到 Azure 中。
有什么提示吗?
没有任何内置功能,但您可以轻松地在代码中编写该功能(请参阅 os.walk
)。
另一种选择是使用子进程模块调用 azcopy 命令行工具。
@Krumelur 几乎是正确的,但在这里我想给出一个工作代码示例,并解释一些文件夹无法上传到 azure blob 存储。
1.Code 示例:
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.You 应该记住,不能创建/上传任何空文件夹到 azure blob 存储,因为 azure blob 存储中没有真正的 "folder"。文件夹或目录只是 blob 名称的一部分。因此,如果文件夹中没有像 test.txt 这样的真正的 blob 文件,就无法 create/upload 一个空文件夹。因此在您的文件夹结构中,空文件夹 SUBFOLDERb 和 SUBFOLDERc 无法上传到 azure blob 存储。
测试结果如下,所有非空文件夹都上传到azure中的blob存储: