Python如何在无文件系统访问时获取路径的最后一级目录?
无需访问文件系统的路径分区列提取方案
不需要访问远程文件系统,完全可以通过路径字符串的格式特征统一处理三种场景。核心思路是:区分路径最后一部分是带扩展名的文件,还是无扩展名的目录——如果是文件则取其父目录名,否则直接取最后一部分的名称。
推荐方案(pathlib 实现,简洁可靠)
可读性高的两行版
from pathlib import PurePosixPath p = PurePosixPath(path) partition = p.parent.name if p.suffix else p.name
单行版
from pathlib import PurePosixPath partition = (lambda p: p.parent.name if p.suffix else p.name)(PurePosixPath(path))
测试验证
针对你给出的三种路径:
path1 = "/path/to/2012-01-01/files/2014-01-31/la.parquet":p.suffix为.parquet,取父目录名2014-01-31;path2 = "/path/to/2012-01-01/files/2014-01-31/":标准化后路径末尾斜杠被移除,p.suffix为空,取当前目录名2014-01-31;path3 = "/path/to/2012-01-01/files/2014-01-31":p.suffix为空,取当前目录名2014-01-31。
兼容 os 模块的替代实现
如果偏好使用传统 os 模块,也可以通过字符串处理实现:
import os normalized = os.path.normpath(path) parts = [part for part in normalized.split('/') if part] partition = parts[-2] if '.' in parts[-1] else parts[-1]
逻辑说明:先标准化路径(自动移除末尾斜杠),拆分路径并过滤空字符串,再判断最后一部分是否包含扩展名分隔符 .,是则取倒数第二部分,否则取最后一部分。
内容的提问来源于stack exchange,提问作者Esben Eickhardt
相关产品推荐
相关产品推荐

