Path().parent не срабатывает как ожидалось

Нужно получить ближайшего родителя текущей рабочей директории.

In [1]: Path()
Out[1]: WindowsPath('.')

In [2]: Path().parent
Out[2]: WindowsPath('.')

In [3]: Path(Path().absolute()).parent
Out[3]: WindowsPath('D:/AnaPy')

Получить желаемое мне конечно удалось, но наверняка есть лучшее решение.
Я так и не понял, почему Path().parent не срабатывает.


Ответы (1 шт):

Автор решения: MaxU

В официальной документации есть несколько предупреждений на этот счет:

You cannot go past an anchor, or empty path:

>>>
>>> p = PurePosixPath('/')
>>> p.parent
PurePosixPath('/')
>>> p = PurePosixPath('.')
>>> p.parent
PurePosixPath('.')

Note This is a purely lexical operation, hence the following behaviour:

>>>
>>> p = PurePosixPath('foo/..')
>>> p.parent
PurePosixPath('foo')

If you want to walk an arbitrary filesystem path upwards, it is recommended to first call Path.resolve() so as to resolve symlinks and eliminate “..” components.

Поэтому сначала воспользуйтесь .resolve(), как советуют в документации:

Path().resolve().parent

а еще лучше более явно указать текущий путь:

Path('.').resolve().parent
→ Ссылка