我可以使用Python将单个文件上传到Azure blob存储。但是对于包含多个包含数据的文件夹的文件夹,是否可以尝试将具有相同目录的整个文件夹上载到Azure?
说我有
文件夹
------ SUBFOLDERa
---------- filea.txt
---------- fileb.txt
------ SUBFOLDERb
------ SUBFOLDERc
我想将上述FOLDERA结构放入Azure。
有提示吗?
答案 0 :(得分:0)
没有内置任何内容,但是您可以轻松地在代码中编写该功能(请参见os.walk
)。
另一种选择是使用子流程模块调用azcopy命令行工具。
答案 1 :(得分:0)
@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名称的一部分。因此,如果在文件夹中没有真正的blob文件(如test.txt),就无法创建/上传空文件夹。因此,在您的文件夹结构中,空文件夹SUBFOLDERb和SUBFOLDERc无法上传到Azure Blob存储。
测试结果如下,所有非空文件夹均以天蓝色上传到blob存储中: