【发布时间】:2016-06-28 18:20:25
【问题描述】:
python 库pathlib 提供Path.relative_to。如果一个路径是另一个路径的子路径,则此函数可以正常工作,如下所示:
from pathlib import Path
foo = Path("C:\\foo")
bar = Path("C:\\foo\\bar")
bar.relative_to(foo)
> WindowsPath('bar')
但是,如果两条路径在同一级别,relative_to 不起作用。
baz = Path("C:\\baz")
foo.relative_to(baz)
> ValueError: 'C:\\foo' does not start with 'C:\\baz'
我希望结果是
WindowsPath("..\\baz")
os.path.relpath 函数正确地做到了这一点:
import os
foo = "C:\\foo"
bar = "C:\\bar"
os.path.relpath(foo, bar)
> '..\\foo'
有没有办法使用pathlib.Path实现os.path.relpath的功能?
【问题讨论】:
-
你解决过这个问题吗?我遇到了同样的问题。我想尽可能在 os.path 上使用 pathlib 进行标准化,但是这个问题让我很难过。
-
@Phil 在这种情况下你似乎不得不回到
os.path.relpath:( ...似乎pathlib模块没有被认为是os.path的替代品: (。或者你有没有找到pathlib-only 的解决方案? -
不,我还没有找到
pathlib-only 解决方案。