gpt4 book ai didi

python-3.x - Azure 文件共享 - 递归目录搜索,如 os.walk

转载 作者:行者123 更新时间:2023-12-02 06:13:58 33 4
gpt4 key购买 nike

我正在编写一个 Python 脚本来从 Azure 文件共享下载文件。文件共享的结构如下:

/analytics/Part1/file1.txt
/analytics/Part1/file2.txt
/analytics/mainfile.txt
/analytics/Part1/Part1_1/file11.txt

我尝试在脚本中使用以下几行,但它仅在根目录级别查找文件和目录。

fileshareclient = ShareClient(
account_url=args.get('AccountURL'),
credential=args.get('SASKey'),
share_name=args.get('FileShare')
)

fileLst = list(
fileshareclient.list_directories_and_files('analytics')
)

输出为:

/analytics/mainfile.txt  --> File
/analytics/Part1 --> Dir

但是,我正在寻找类似Python中的os.walk()函数来实现这个递归目录遍历。知道 Azure 文件服务 Python API 中是否提供此类功能吗?

最佳答案

built-in list_directories_and_files() method Azure Storage File Share client library for Python azure-storage-file-share的仅列出根目录和文件。如果你想要像os.walk()这样的东西,你应该自己编写该方法。

这里,我写了一个函数,可以递归地列出所有文件/目录,并且运行良好(如果不满足您的需要,请随意修改):

from azure.storage.fileshare import ShareServiceClient

def list_recursive(directory_client,directory_name):
sub_client = directory_client.get_subdirectory_client(directory_name)
myfiles = sub_client.list_directories_and_files()

for file in myfiles:
print(file.get('name'))
if file.get('is_directory'):
list_recursive(sub_client,file.get('name'))


if __name__ == '__main__':
conn_str="xxxx"
file_service = ShareServiceClient.from_connection_string(conn_str)

share_client = file_service.get_share_client("your_share_name")
d_client = share_client.get_directory_client("your_directory_name")
myfiles = d_client.list_directories_and_files()

for file in myfiles:
print(file.get('name'))
if file.get('is_directory'):
list_recursive(d_client,file.get('name'))

关于python-3.x - Azure 文件共享 - 递归目录搜索,如 os.walk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66532170/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com