【问题标题】:Python pathlib: Resolve full path to symbolic link without following itPython pathlib:解析符号链接的完整路径而不遵循它
【发布时间】:2019-07-10 08:58:32
【问题描述】:

假设我有一个指向/home/me/target 的链接/home/me/folder/link。 当我打电话时

pathlib.Path("link").resolve()

来自/home/me/folder/,它将返回到目标的解析路径,而不是链接的解析路径。 如何使用pathlib 获得后者(resolve() 似乎没有任何选项)?

os.path 相当于我正在寻找的内容是os.path.abspath("link")

【问题讨论】:

    标签: python path os.path pathlib


    【解决方案1】:

    pathlib.Path 有一个 absolute 方法可以满足您的需求。

    $  mkdir folder
    $  touch target
    $  ln -s ~/target ~/folder/link
    $  ls -l folder/
    total 0
    lrwxrwxrwx 1 me users 16 Feb 20 19:47 link -> /home/me/target
    $  cd folder
    
    $/folder  python3.7 -c 'import os.path;print(os.path.abspath("link"))'
    /home/me/folder/link
    
    $/folder  python3.7 -c 'import pathlib;p = pathlib.Path("link");print(p.absolute())'
    /home/me/folder/link
    

    该方法没有出现在模块文档中,但它的docstring 写道:

    返回此路径的绝对版本。此功能有效 即使路径没有指向任何东西。 没有进行标准化,即所有的“。”和 '..' 将被保留。 使用 resolve() 获取文件的规范路径。

    值得注意的是,方法代码(在 3.7 分支中)中有 cmets,表明它可能无法在所有平台上进行全面测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 2012-09-19
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多