pathlib resolve()方法无法解析不存在的文件

时间:2019-04-16 14:44:50

标签: python python-3.x anaconda pathlib

Python 3.6.1的resolve()中的pathlib方法似乎无法正常工作。 (使用Anaconda 4.4.0版)

给出以下程序:

from pathlib import Path
parent_dir = ("/tmp/test2")
file_path=Path("a.txt")
path = parent_dir / file_path
print("PARENT_DIR: ", parent_dir)
print("FILE_PATH: ", file_path)
print("PATH: ", path)
print("PATH.RESOLVE(): ",path.resolve(strict=False))

即使/tmp/test2/a.txt不存在,我也希望看到PATH.RESOLVE()打印为/tmp/test2

相反,我看到了:

% > python bug.py
PARENT_DIR:  /tmp/test2
FILE_PATH:  a.txt
PATH:  /tmp/test2/a.txt
PATH.RESOLVE():  /tmp/test2

pathlib documentation这样说:

  

如果该路径不存在且strict为True,则引发FileNotFoundError。如果strict为False,则将尽可能地解析路径,并且在不检查路径是否存在的情况下附加其余的路径。如果在解析路径上遇到无限循环,则会引发RuntimeError。

作为该错误的最终测试,如果我创建/tmp/test2,则会得到预期的行为:

> mkdir /tmp/test2
> python bug.py
PARENT_DIR:  /tmp/test2
FILE_PATH:  a.txt
PATH:  /tmp/test2/a.txt
PATH.RESOLVE():  /tmp/test2/a.txt
> 

这是错误还是我做错了什么?

其他说明:该程序可在Python 3.6.3的Mojave上正常运行。上面的结果是使用Red Hat 6.10

1 个答案:

答案 0 :(得分:0)

原来这是pathlib2-2.2.1中的错误。它在pathlib2-2.3.0中已修复。