python - 将路径重新定位到新根目录的最Pythonic方法

标签 python

我有以下内容:

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/

相关文章:

python - 加快矩阵中每个 x,y 点的角度计算

python - 绘制散点图最密集区域的等高线

python - 边不显示在使用 Networkx 的图形中 - Python

python - 编写此程序的更好方法

python - PySerial : weird output with letter and quotation marks

python - 如何为不同的环境(开发、生产等)设置 settings.py

python - matplotlib 中的关闭步骤

python - 扭曲的 adbapi : runInteraction last_insert_id()

python - 属性错误 : 'ParentedTree' object has no attribute 'label'

Python模块导入问题: import statement in different location