Метод pathlib resol () не разрешает несуществующие файлы - PullRequest
0 голосов
/ 16 апреля 2019

Метод 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

1 Ответ

0 голосов
/ 16 апреля 2019

Оказывается, это была ошибка в pathlib2-2.2.1.Это исправлено в pathlib2-2.3.0.

...