You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 09:02:34