2010-08-02 30 views
11

Tengo una aplicación de Python en la que estoy creando paquetes en Windows para usar y luego comparar en una aplicación de Linux Python. Estoy creando un md5 para un archivo en Windows que se comprobará más tarde en Linux. El problema es que el mismo código en el mismo archivo da diferentes resultados de hash Md5 en cada entorno. A continuación se muestra el método que uso para calcular el Md5. (Es el mismo código en cada extremo, y estoy usando Python 2.6.5 para ambos entornos windows/linux) Cuando ejecuto esto en el mismo archivo en diferentes entornos, obtengo hashes md5 que no coinciden.Python - Hashlib MD5 difiere entre Linux/Windows

def md5_for_file(filePath): 
     md5 = hashlib.md5() 
     file = open(filePath) 
     while True: 
      data = file.read(8192) 
      if not data: 
       break 
      md5.update(data) 

     file.close() 
     return md5.hexdigest() 

Se agradecen todas las ideas o sugerencias.

Respuesta

22

Cambio open(filePath)-open(filePath, 'rb'), donde el b es para el modo binario. Actualmente se está abriendo en modo texto, lo que puede causar problemas de portabilidad.

+0

¡Eso fue todo! Ahora obtengo los MD5 coincidentes en ambos sistemas. Gracias –

0

de verificación si los dos archivos utilizan la misma codificación y lineendings

Cuestiones relacionadas