Python's pathlib 获取父级的相对路径
Python's pathlib get parent's relative path
考虑以下 Path
:
import pathlib
path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')
如何从 Path
中提取准确的字符串 documents\importantdocuments
?
我知道这个例子看起来很傻,这里的真实上下文是将本地文件转换为远程下载link。
使用 PurePath.relative_to()
method 生成相对路径。
你不是很清楚基本路径是如何确定的;这里有两个选项:
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'
这适用于任何 OS 和 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))
考虑以下 Path
:
import pathlib
path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')
如何从 Path
中提取准确的字符串 documents\importantdocuments
?
我知道这个例子看起来很傻,这里的真实上下文是将本地文件转换为远程下载link。
使用 PurePath.relative_to()
method 生成相对路径。
你不是很清楚基本路径是如何确定的;这里有两个选项:
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'
这适用于任何 OS 和 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))