【问题标题】: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。