Dadas dos rutas que tengo que comparar si apuntan al mismo archivo o no. En Unix esto se puede hacer con os.path.samefile
, pero como la documentación indica que no está disponible en Windows. ¿Cuál es la mejor manera de emular esta función? No es necesario que emule el caso común. En mi caso existen las siguientes simplificaciones:¿Cómo emular el comportamiento os.path.samefile en Windows y Python 2.7?
- Las rutas no contienen enlaces simbólicos.
- Los archivos están en el mismo disco local.
Ahora utilizar los siguientes:
def samefile(path1, path2)
return os.path.normcase(os.path.normpath(path1)) == \
os.path.normcase(os.path.normpath(path2))
¿Está bien?
'>>> os.path.normcase (os.path.normpath (r" c: \ users \ aayoubi \ desktop ")) 'c: \\ users \\ aayoubi \\ desktop'' i couldn' Encontrar casos en los que esto fracase. – aayoubi
Acabo de encontrar un ejemplo. 'c: \\ one \ two' y 'c: \\ one \ two \' pueden apuntar al mismo directorio, pero este método diría que son diferentes. –
ambas salidas fueron las mismas: '>>> os.path.normcase (os.path.normpath (r" c: \\ one \ two ")) 'c: \\ one \\ two'' '>>> os.path.normcase (os.path.normpath (r" c: \\ one \ two \\ ")) 'c: \\ one \\ two'' – aayoubi