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

问题描述 投票:174回答:8

在Python中,假设我有这样的路径:

/folderA/folderB/folderC/folderD/

我怎样才能得到folderD部分?

python path path-manipulation
8个回答
319
投票

使用os.path.normpath,然后使用os.path.basename

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

第一个剥离任何尾部斜杠,第二个为您提供路径的最后一部分。仅使用basename会在最后一次斜线后提供所有内容,在本例中为''


20
投票

你可以做到

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

UPDATE1:这种方法适用于你给它/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)

UPDATE2:正如lars指出的那样,进行更改以容纳尾随'/'。

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

14
投票

这是我的方法:

>>> import os
>>> print os.path.basename(
        os.path.dirname('/folderA/folderB/folderC/folderD/test.py'))
folderD
>>> print os.path.basename(
        os.path.dirname('/folderA/folderB/folderC/folderD/'))
folderD
>>> print os.path.basename(
        os.path.dirname('/folderA/folderB/folderC/folderD'))
folderC

9
投票

使用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'

7
投票

我正在寻找一个解决方案,以获取文件所在的最后一个文件名,我只使用拆分两次,以获得正确的部分。这不是问题,但谷歌在这里转移了我。

pathname = "/folderA/folderB/folderC/folderD/filename.py"
head, tail = os.path.split(os.path.split(pathname)[0])
print(head + "   "  + tail)

2
投票

天真的解决方案(Potchon 2.5.2+):

s="/path/to/any/folder/orfile"
desired_dir_or_file = s[s.rindex('/',0,-1)+1:-1] if s.endswith('/') else s[s.rindex('/')+1:]

0
投票
path = "/folderA/folderB/folderC/folderD/"
last = path.split('/').pop()

0
投票
str = "/folderA/folderB/folderC/folderD/"
print str.split("/")[-2]
© www.soinside.com 2019 - 2024. All rights reserved.