python - Python pathlib:解析符号链接的完整路径而不遵循它
问题描述
假设我有一个/home/me/folder/link
指向/home/me/target
. 当我打电话
pathlib.Path("link").resolve()
from /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
该方法未出现在模块文档中,但其文档字符串为:
返回此路径的绝对版本。即使路径不指向任何东西,此功能也有效。没有进行规范化,即所有的“。” 和 '..' 将被保留。使用 resolve() 获取文件的规范路径。
值得注意的是,方法代码(在 3.7 分支中)中有注释表明它可能无法在所有平台上进行全面测试。
推荐阅读
- c++ - Make:变量无法从 shell 调用分配
- ios - Swift 将多个类分配给 UI 元素
- android - Android UDP 点对点网络通信(无服务器)
- firebase - Flutter/Firebase:如何在不使用 '.then(...)' 函数的情况下访问当前用户
- android - Recyclerview 通过屏幕位置 x/y 获取项目
- php - laravel 表中的 Boostrap 模态集成
- php - 上传文件 CakePHP 致命错误
- r - 数据整理?- 如何根据唯一标识符将多行数据重塑/折叠到 R 中的一个单元格中?
- c# - 如果 Task.run 可以实现相同的效果,为什么还要使用异步等待
- regex - 通过正则表达式在 ABAP 中提取日期和时间