Azure ADLS Gen2如何仅列出指定目录顶层的文件?
获取Azure Data Lake指定目录下的直接文件
问题描述
使用以下代码获取容器中子目录的文件时,get_paths()会返回目录a/b/c下所有子目录中的文件和文件夹,但仅需要目录c本身的文件:
from azure.storage.filedatalake import DataLakeServiceClient remote_paths = service_client.get_file_system_client("mycontainer").get_paths(path="a/b/c")
已知可以通过is_directory属性区分文件和目录,但该方法仍会返回子目录中的内容;也可以通过检查路径字符串判断是否属于子文件夹,但希望找到更优的实现方式。
最优解决方案
get_paths()方法默认开启递归遍历(recursive=True),只需将该参数设置为False,就能仅获取指定目录下的直接内容,再通过is_directory过滤掉目录项即可得到目标文件:
from azure.storage.filedatalake import DataLakeServiceClient # 初始化service_client后执行以下操作 file_system_client = service_client.get_file_system_client("mycontainer") # 关闭递归,仅获取a/b/c目录下的直接内容 remote_paths = file_system_client.get_paths(path="a/b/c", recursive=False) # 过滤出当前目录下的文件(排除子目录) target_files = [path for path in remote_paths if not path.is_directory]
方案优势
- 直接通过API参数控制遍历范围,无需手动解析路径字符串,代码更简洁可靠
- 减少不必要的遍历请求,提升执行效率,避免处理冗余的子目录内容
内容的提问来源于stack exchange,提问作者kiesel
相关产品推荐
相关产品推荐

