Метод resolve()
в Python 3.6.1 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 гласит:
Если путь не существует, а для параметра strict установлено значение True, вызывается FileNotFoundError. Если строгим является Ложь, путь разрешается, насколько это возможно, и любой остаток добавляется без проверки, существует ли он. Если вдоль пути разрешения встречается бесконечный цикл, вызывается 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
>
Это ошибка или я что-то не так делаю?
Дополнительное примечание: эта программа работает правильно на Mojave на Python 3.6.3. Вышеуказанный результат был с Red Hat 6.10