我有以下内容:
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
如何以Pythonic方式有效实现relocate_path
?标准库中有类似的东西吗? (我在 os.path 中尝试过,但什么也没找到)
最佳答案
您需要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
,但我应该说我不知道它是如何工作的。
关于python - 将路径重新定位到新根目录的最Pythonic方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883844/