python 'path.basename'类函数,但要获取路径的根

fumotvh3  于 2022-12-17  发布在  Python
关注(0)|答案(2)|浏览(173)

os.pathbasename函数返回给定路径的最后一个文件夹/文件,我想知道是否有一种简单的方法来获得路径的根(以及为什么在os.path模块中没有一个函数)

>>> from os import path
>>> path.basename('./a/b/c')
'c'
>>> """ what if we could do like so:
>>> path.rootname('./a/b/c')
>>> './a'
>>> """

我想做的第一件事是在目标中递归path.dirname,直到它到达根文件夹,但我想不出一个最佳的方法来这样做,试图玩弄.split str方法,但也无法实现它。

cgyqldqp

cgyqldqp1#

也许pathlib是来救援的?

from pathlib import Path

p = Path("./foo/bar/baz.qwurx")
print(p.parents[len(p.parents)-1])
print(p.parents[len(p.parents)-2])
print(p.parents[len(p.parents)-3])

收益率

.
foo
foo/bar

注意,./foofoo是相等的。

e5nqia27

e5nqia272#

问题的解决方案(有人请提交关于此功能的PEP)

from os import path
from pathlib import Path

def rootname(dest: str):
    """
    Will return the root of a path.
    """
    p = Path(dest)

    return path.join(
        p.parents[len(p.parents) - 1],
        p.parents[len(p.parents) - 2]
    )

相关问题