Python pathlib:不遵循符号链接即可解析符号链接的完整路径

时间:2019-02-16 11:18:44

标签: python path os.path pathlib

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

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

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

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

1 个答案:

答案 0 :(得分: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分支中)表明可能未在所有平台上都经过全面测试。