Python:如何获取文件路径的最后n个元素

san*_*ayr 6 python-3.x

假设我有这样的路径:

/folderA/folderB/folderC/item1
/folderA/folderB/folderX/item2
/folderA/folderB/folderF/item1
/folderA/folderB/folderQ/item5
Run Code Online (Sandbox Code Playgroud)

如何获取文件路径的最后两个元素?

folderC/item1
folderX/item2
folderF/item1
folderQ/item5
Run Code Online (Sandbox Code Playgroud)

我知道我可以 git 目录或文件

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


>>> os.path.dirname('/folderA/folderB/folderC/item1')
>>> /folderA/folderB/folderC/
Run Code Online (Sandbox Code Playgroud)

ita*_*ter 11

from pathlib import Path
path = r"/folderA/folderB/folderC/item1"
Path(*Path(path).parts[-2:])
Run Code Online (Sandbox Code Playgroud)

输出:

PosixPath('folderC/item1')
Run Code Online (Sandbox Code Playgroud)

注意:如果您愿意,可以将PosixPath对象转换为 str


And*_*eas 9

import os
path = r"/folderA/folderB/folderC/item1"
Run Code Online (Sandbox Code Playgroud)

对于 Windows:

os.sep.join(path.rsplit(r"/")[-2:])
Run Code Online (Sandbox Code Playgroud)

独立于操作系统:

os.sep.join(os.path.normpath(path).split(os.sep)[-2:])
Run Code Online (Sandbox Code Playgroud)