В системах Windows нет функции samefile
, и вам также нужно беспокоиться о случае. normcase
функция из os.path
может быть объединена с abspath
для обработки этого случая.
from os.path import abspath, normcase
def are_paths_equivalent(path1, path2):
return normcase(abspath(path1)) == normcase(abspath(path2))
Это будет считать "C: \ SPAM \ Eggs.txt" эквивалентным "c: \ spam \ eggs.txt" в Windows.
Обратите внимание, что в отличие от samefile
, все методы, основанные на нормализации и сравнении путей, не будут знать о случаях, когда совершенно разные пути ссылаются на один и тот же файл. В Windows это означает, что если вы используете SUBST, MKLINK или смонтированные сетевые ресурсы для создания нескольких разных путей к одному и тому же файлу, ни одно из этих решений не сможет сказать «это один и тот же файл». Надеюсь, в большинстве случаев это не слишком большая проблема.