如何在Python中获取路径的最后部分?

400 投票
10 回答
350909 浏览
提问于 2025-04-16 05:25

中,假设我有这样一个路径:

/folderA/folderB/folderC/folderD/

我该怎么才能只得到folderD这一部分呢?

10 个回答

39

你可以这样做:

>>> import os
>>> os.path.basename('/folderA/folderB/folderC/folderD')

更新1:这种方法适用于你给它的路径是 /folderA/folderB/folderC/folderD/xx.py。在这种情况下,xx.py 会被当作基本文件名。但我想这不是你想要的结果。所以你可以这样做:

>>> import os
>>> path = "/folderA/folderB/folderC/folderD"
>>> if os.path.isdir(path):
        dirname = os.path.basename(path)

更新2:正如 lars 提到的,做一些修改以适应路径末尾的 '/'。

>>> from os.path import normpath, basename
>>> basename(normpath('/folderA/folderB/folderC/folderD/'))
'folderD'
129

在Python 3中,你可以使用pathlib模块(比如pathlib.PurePath):

>>> import pathlib

>>> path = pathlib.PurePath('/folderA/folderB/folderC/folderD/')
>>> path.name
'folderD'

如果你想获取一个文件所在的最后一个文件夹的名字:

>>> path = pathlib.PurePath('/folderA/folderB/folderC/folderD/file.py')
>>> path.parent.name
'folderD'
617

可以使用 os.path.normpath 这个函数来去掉路径末尾的斜杠,然后用 os.path.basename 可以得到路径的最后一部分:

>>> os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))
'folderD'

如果只用 basename,它会返回最后一个斜杠后面的所有内容,在这个例子中就是 ''(空字符串)。

撰写回答