Python的pathlib获取父级相对路径

49

考虑以下路径(Path)

import pathlib
path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')

我怎样才能从那个 Path 中提取确切的字符串 documents\importantdocuments 呢?

我知道这个例子看起来很傻,实际上背后的意义是将本地文件翻译成远程下载链接。


你想要相对于第二个父目录吗?还是硬编码路径? - Martijn Pieters
@MartijnPieters 我想要字符串 documents\importantdocuments - Mojimi
我知道。但是为什么选择你路径的那一部分呢?是因为它们是路径的最后两部分吗?还是你在其他地方有Path(r'C:\users\user1'),那就是参考路径? - Martijn Pieters
@MartijnPieters 因为我需要父文件夹的相对路径。 - Mojimi
2个回答

85

使用 PurePath.relative_to() 方法生成相对路径。

你没有明确说明基本路径如何确定,这里有两个选项:

secondparent = path.parent.parent
homedir = pathlib.Path(r'C:\users\user1')

那么只需在path.relative_to(secondparent)path.relative_to(homedir)的结果上使用str()即可。

演示:

>>> import pathlib
>>> path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')
>>> secondparent = path.parent.parent
>>> homedir = pathlib.Path(r'C:\users\user1')
>>> str(path.relative_to(secondparent))
'documents\\importantdocuments'
>>> str(path.relative_to(homedir))
'documents\\importantdocuments'

-2

这适用于任何操作系统和Python的每个版本:

import os
os.path.join(os.path.basename(os.path.dirname(p)),os.path.basename(p))

这适用于Python 3:

str(p.relative_to(p.parent.parent))

16
他正在使用pathlib,他并没有要求替代方案。 - Ankirama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接