2010-08-02 22 views
11

我有一個python應用程序,我在其中創建了要在Windows中使用的包,然後在linux python應用程序中進行比較。我正在爲windows中的文件創建一個md5,稍後在linux中進行檢查。問題是相同文件上的相同代碼在每個環境中給出不同的Md5散列結果。以下是我用來計算Md5的方法。 (每一端都是相同的代碼,我在Python/Linux環境下使用Python 2.6.5)當我在不同的環境中對同一個文件運行這個時,我得到的md5哈希值不匹配。Python -Hashlib MD5在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() 

任何意見或建議表示讚賞。

回答

22

變化open(filePath)open(filePath, 'rb'),其中b是二進制模式。您目前正在以文本模式打開,這可能會導致可移植性問題。

+0

就是這樣!我現在可以在兩個系統上匹配MD5。謝謝 – 2010-08-02 18:41:23

0

檢查,如果這兩個文件使用相同的編碼和lineendings

相關問題