假设我有一个指向/home/me/folder/link
的链接/home/me/target
。
当我打电话
pathlib.Path("link").resolve()
从/home/me/folder/
开始,它将返回到 target 的解析路径,而不是链接的解析路径。
我该如何使用pathlib
来获得后者(resolve()
似乎没有任何选择)?
(os.path
相当于我正在寻找的os.path.abspath("link")
)
答案 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分支中)表明可能未在所有平台上都经过全面测试。