В Python 3.4, как лучше / проще всего сравнивать пути?

Использование этого кода в Python 3.4 и Ubuntu 14.04 не возвращаются True

import pathlib

path1 = pathlib.Path("/tmp")
path2 = pathlib.Path("/tmp/../tmp")

print(path1 == path2)
# gives False

print(path1 is path2)
# gives False

Но обычно "/tmp" и "/tmp/../tmp" - это одна и та же папка. Так как же убедиться, что сравнения возвращают True?

3 ответа

Решение

Для сравнения вы должны сначала разрешить пути, или вы также можете использовать os.path.samefile. Пример:

print(path1.resolve() == path2.resolve())
# True       

import os
print(os.path.samefile(str(path1), str(path2)))
# True

Кстати, path1 is path2 проверяет, если path1 это тот же объект, что и path2 вместо сравнения реальных путей.

Для тех, кто использует более новую версию Python, чем OP: начиная с Python 3.5, вы также можете использовать path1.samefile(path2), см . документацию .

Попробуйте некоторые функции на этой странице. Я думаю, что вы можете вызвать os.path.normpath(путь) или какую-то похожую функцию.

Другие вопросы по тегам