You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6+使用pathlib不解析符号链接获取绝对路径的疑问

获取不解析符号链接的绝对路径(Python 3.6+ pathlib用法)

你的思路其实已经找对了方向,但确实有更简洁直接的方法,还有一些关于resolve()的细节可以明确:

  • 首选方案:使用absolute()方法
    Python 3.6及以上的pathlib.Path自带absolute()方法,它的作用就是返回文件的绝对路径,并且不会解析符号链接,完全匹配你的需求。用法非常简单:

    from pathlib import Path
    ex = Path('example.txt')
    abs_ex = ex.absolute()
    

    这个方法和os.path.abspath()是对应的,但用pathlib的链式调用风格更统一。

  • 关于resolve()的参数说明
    resolve()方法的核心作用就是解析符号链接、规范化路径,它的参数只有一个strict(默认False):

    • 当strict=True时,如果路径不存在会抛出FileNotFoundError;False则允许路径不存在。
      但不管strict怎么设置,resolve()都会解析符号链接,所以它确实不适合你要保留符号链接路径的场景。你之前用ex.parent.resolve()/ex的写法是可行的,但属于“曲线救国”,不如absolute()直接。
  • 效果验证示例
    假设当前目录有一个符号链接link.txt指向example.txt,测试代码如下:

    from pathlib import Path
    link_path = Path('link.txt')
    
    print(link_path.absolute())  # 输出: /当前绝对路径/link.txt(保留符号链接)
    print(link_path.resolve())   # 输出: /当前绝对路径/example.txt(解析了符号链接)
    

总结一下,最简洁且符合需求的写法就是调用absolute()方法,既满足获取绝对路径,又不会解析符号链接。

内容的提问来源于stack exchange,提问作者Ray Salemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:35:27