以防万一我错过了什么,在我为问题实施自己的解决方案之前。
在我们的构建系统中,我总是必须使用相对路径来保持所有项目的可移动性。因此,构建脚本应该生成文件的相对路径。
然而,python 库中似乎没有可以处理父路径步骤的函数,如下例所示:
from pathlib import Path
dir_a = Path("/home/example/solution/project")
file_b = Path("/home/example/solution/config.h")
我想获得file_b
相对于的路径dir_a
。因此,如果我从 开始dir_a
,相对路径将指向file_b
。
最好的结果是:
>>> file_b.relative_to(dir_a)
Path("../config.h")
举这个稍微复杂一点的例子:
from pathlib import Path
dir_a = Path("/home/example/solution/project_a")
file_b = Path("/home/example/solution/project_b/config.h")
最好的结果是:
>>> file_b.relative_to(dir_a)
Path("../project_b/config.h")
使用这些方法的两个示例.relative_to
都不起作用并引发异常:
ValueError: '/home/example/solution/project_b/config.h' does not start with '/home/example/solution/project_a'
该os.path.relpath
方法按预期工作,但返回一个字符串而不是一个Path
对象:
>>> os.path.relpath(file_b, dir_a)
'../project_b/config.h'
所以我想知道我是否在这里遗漏了什么......
如何使用 Path 对象获取与父目录的相对路径?
为什么对象的relative_to
实现Path
不起作用?