Python Pathlib:解决符号链接的完整路径而无需遵循它



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

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

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

(使用os.path,我要寻找的是os.path.abspath("link")

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分支中)中有评论,建议它可能并非在所有平台上进行全面测试。

最新更新