Path.parents
фактически возвращает вспомогательный объект, который обеспечивает индексированный доступ и эффективную итерацию по элементам пути (типа pathlib._PathParents
).В результате ваше сравнение не выполняется, поскольку он пытается сравнить эти два вспомогательных объекта, а не их содержимое.
Документы несколько вводят в заблуждение в этом смысле:
Path.parents : неизменяемая последовательность, обеспечивающая доступ к логическим предкам пути
... для фактического ответа на вопрос, у вас есть варианты:
Как указано вкомментарии вы можете просто сравнить родителей:
Path(input).parent == Path(output).parent
Это работает во многих случаях, но будет не совпадать, если путь не имеет ту же форму - т.е. когда ..
появляется впуть или символические ссылки присутствуют.
Метод Path(...).samefile(...)
предоставляет хороший способ избежать этих проблем, но имейте в виду, что использование Path(...).parent.samefile(...)
все еще может быть проблемой из-за игнорирования вычисления parent
..
.
Использование формы Path(...).resolve().parent.samefile(...)
- наиболее полный способ избежать всех этих проблем, который я нашел.
Для этого конкретного вопроса это будет выглядеть так:
Path(input).resolve().parent.samefile(Path(output).resolve().parent)