Ang*_*Sen 3 azure python-3.x azure-files azure-storage-files
我正在编写一个 Python 脚本来从 Azure 文件共享下载文件。文件共享的结构如下:
/analytics/Part1/file1.txt
/analytics/Part1/file2.txt
/analytics/mainfile.txt
/analytics/Part1/Part1_1/file11.txt
Run Code Online (Sandbox Code Playgroud)
我尝试在脚本中使用以下几行,但它仅在根目录级别查找文件和目录。
/analytics/Part1/file1.txt
/analytics/Part1/file2.txt
/analytics/mainfile.txt
/analytics/Part1/Part1_1/file11.txt
Run Code Online (Sandbox Code Playgroud)
输出是:
/analytics/mainfile.txt --> File
/analytics/Part1 --> Dir
Run Code Online (Sandbox Code Playgroud)
但是,我正在寻找类似os.walk()Python 中的函数的东西来实现这种递归目录遍历。知道 Azure 文件服务 Python API 中是否提供此类功能吗?
Iva*_*ang 10
适用list_directories_and_files()于 Python 的 Azure 存储文件共享客户端库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'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3161 次 |
| 最近记录: |