【问题标题】:different behavior of pathlib resolve functionpathlib 解析函数的不同行为
【发布时间】:2020-10-22 20:31:02
【问题描述】:

任务是从 ini 文件中读取值
我正在使用 Pycharm,由于某些原因无法从相对路径中找到文件
我用pathlib.Pathresolve设置绝对路径
因为os.path.abspath("config_file/config.ini") 不适用于我的 Windows 设置

filepath = pathlib.Path('../../myproject/config_file/config.ini').resolve()
在我当前的机器上工作,但是当我在另一台设备上运行代码时,无法再次找到 ini 文件。
关于这个答案Use resolve() 是否提到了在使用此功能时可能出现的一些错误。 这些问题是否已经解决或者我只是不知道pathlib resolve 的功能?

【问题讨论】:

    标签: python path absolute-path pathlib


    【解决方案1】:

    根据我的实验,与os.path.abspath相比,resolve()在使用前没有那么严格

    假设您有以下运行脚本的输出,这意味着您正在目录/home/aaa上运行

    os.path.abspath("config_file/config.ini")
    # /home/aaa/config_file/config.ini
    
    

    abspath 返回绝对路径给你,而不检查config_file/config.ini 是否存在。

    但是,pathlib.Path.resolve() 不一样。如果您想要来自resolve() 的绝对路径,则必须存在这样的文件/home/aaa/config_file/config.ini。否则,resolve() 会返回您的相对路径。

    为了回答你的问题,我猜你的程序在你的窗口部署中找不到这样的 config.ini。试试看os.getcwd()的结果,你就知道为什么失败了。

    已编辑:窗口中的 Python 的行为与我描述的一样。但是,在 linux 平台上,它无论如何都可以返回 abspath。

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 2023-03-25
      • 2011-08-17
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多