如何让Azure文件共享自动生成不存在的目录?

时间:2017-03-24 12:14:12

标签: python-3.x azure amazon-s3

使用AWS S3,我可以将文件test.png上传到我喜欢的任何目录,无论它是否存在...因为S3会自动生成完整路径&目录。

例如,如果我上传到S3,我使用路径this/is/a/new/home/for/test.png,S3将创建目录thisisa,...和将test.png上传到正确的文件夹。

我正在迁移到Azure,我希望使用他们的文件存储。但是,似乎我必须手动创建每个目录...我显然可以通过检查查看文件夹是否存在而以编程方式进行,如果没有,创建它...但是哇...我为什么要这么努力工作? / p>

我确实尝试过:

file_service.create_file_from_path('testshare', 'some/long/path', 'test.png', 'path/to/local/location/of/test.png')

然而,抱怨该目录不存在......并且仅在我手动创建目录或用some/long/path替换None时才有效。

是否可以只将Azure路径移动并让它创建目录?

1 个答案:

答案 0 :(得分:1)

Azure文件非常类似于OS文件系统,因此为了将文件推送到目录中,该目录必须存在。这意味着如果您需要在嵌套目录结构中创建文件,那么该目录结构必须存在。 Azure文件服务不会为您创建该结构。

您的方案中更好的选择是使用Azure Blob Storage。它非常类似于您在上面提到的Amazon S3行为。您可以创建一个Container(类似于S3中的Bucket),然后上传一个名为this/is/a/new/home/for/test.png的文件。

但请注意,文件夹在Blob存储中是虚拟的(与S3相同)而不是真实文件夹。基本上,将保存blob(类似于S3中的Object)的名称为this/is/a/new/home/for/test.png