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
如果该路径不存在且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
答案 0 :(得分:0)
原来这是pathlib2-2.2.1中的错误。它在pathlib2-2.3.0中已修复。