本地无对应路径时,如何区分云数据湖中的文件与文件夹?
云数据湖路径筛选方案
针对云环境下无法使用本地文件系统判断方法的问题,你可以通过路径后缀匹配+排除无有效后缀的目录的自定义逻辑来实现筛选:
核心思路
- 预先定义需要保留的文件后缀集合(支持.txt、.xlsx等多种格式)
- 遍历路径列表,判断每个路径是否符合「包含有效文件后缀」的特征,同时排除那些看似带点但实际是目录的路径(比如示例中的
example1.2)
代码实现
# 定义需要筛选的文件后缀(统一带点、小写,避免匹配误差) target_extensions = {'.txt', '.xlsx', '.cad', '.csv'} # 你的云数据湖路径列表 path_list = [ "Project 1/Example1/SomeFolder", "Project 1/Example1/SomeFolder/example1.2", "Project 1/Example1/SomeFolder/example1.2/example_r_01.txt", "Project 1/Example1/SomeFolder/example1.2/example_r_02.txt" ] # 执行筛选 filtered_files = [] for path in path_list: # 提取路径的最后一段(文件名或目录名) last_segment = path.split('/')[-1] # 检查是否包含有效后缀且后缀在目标集合内 if '.' in last_segment: file_ext = '.' + last_segment.split('.')[-1].lower() if file_ext in target_extensions: filtered_files.append(path) # 输出筛选结果 print(filtered_files)
特殊情况补充
如果你的云数据湖存在目录名带目标后缀的特殊场景(比如data.txt/这类目录),仅靠路径判断会出错,此时可以结合对应云服务的SDK接口做验证:
- AWS S3:调用
head_object接口,若返回正常则为文件 - 阿里云OSS:调用
get_object_meta接口,判断是否为文件
内容的提问来源于stack exchange,提问作者chaithra ms
相关产品推荐
相关产品推荐

