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