Azure 文件共享的 get_directory_client 和 get_subdirectory_client 之间的区别

differences between get_directory_client and get_subdirectory_client for azure file share

Azure 文件共享 Python SDK 有两个相似的方法 get_directory_clientget_subdirectory_client。似乎两者都在与目录交互。但是我们需要两种方法来执行相同的任务吗?

get_directory_client是获取根目录,get_subdirectory_client是获取当前目录的子目录。

从文档中可以看出,必须获取ShareClient object first. At this time, you can only call get_directory_client to get the root directory, and then you will get the ShareDirectoryClient object. At this time, if you want to get the subdirectory , You can only call the get_subdirectory_client方法

也可以参考description of the file share client了解区别:

==========================更新================== ====

    connection_string = "<your-connection-string>"
    service = ShareServiceClient.from_connection_string(conn_str=connection_string)
    share = service.get_share_client("<your-file-share-name>")
    my_files = []
    for item in share.list_directories_and_files():
        my_files.append(item)
        if item["is_directory"]:
            for item2 in share.get_directory_client(item["name"]).list_directories_and_files():
                my_files.append(item)
                for item3 in share.get_directory_client(item["name"]).get_subdirectory_client(item2["name"]).list_directories_and_files():
                    my_files.append(item3)
        else:
            my_files.append(item)
    print(my_files)

你可以参考这个official documentation

老实说,我发现不得不处理两种不同的方法来做“同一件事”有点令人困惑。我更喜欢通过 from_connection_string 方法实例化目录客户端。

有关如何从 FileShare 列出文件的更多信息,请查看以下 post:。我报告的方法允许递归地列出文件,遍历目录。