1

我有以下内容:

a = "/my/absolute/path"
b = "my/relative/path"
root = "/new/root/dir"
print relocate_path(a, root)
print relocate_path(b, root)

我想得到:

/new/root/dir/my/absolute/path
/new/root/dir/my/relative/path

如何以relocate_pathpythonic方式有效地实现?标准库中有类似的东西吗?(我在os.path中尝试过,但一无所获)

4

2 回答 2

1

您需要os.path.join相对路径。在绝对路径的情况下,我认为你能做的最好的事情就是去掉前导斜杠。

像这样的东西:

def relocate_path(new_root, path):
    return os.path.join(new_root, path.lstrip('/'))

要在给定绝对路径的情况下获取相对于 root 的路径,您还可以执行以下操作:

>>> os.path.relpath('/absolute/path', '/')
'absolute/path'

但我认为它不仅仅是剥离斜线更跨平台。我已经尝试在 Windows 上玩relpath了一下,我应该说我不知道​​它是如何工作的。

于 2013-06-02T14:52:54.233 回答
0

刚才写了一个python小脚本,不知道能不能帮到你。

重新进口

def relocate_path(路径,根):
    模式 = re.compile(r'^/')
    匹配 = 模式匹配(路径)
    如果匹配:
        返回(根+路径)
    别的:
        返回(根+“/”+路径)
于 2013-06-02T15:25:29.800 回答