В 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(путь) или какую-то похожую функцию.