python3文字檔案按行雜湊

jimmy1357發表於2014-04-15

      由於專案需要對一個文字檔案按行雜湊,今天研究了一下python的雜湊使用,開始生成的md5總是和標準的md5 (32位)不同,經過反覆測試發現,原來python從檔案中按行讀取的資料自帶了換行符,所以現在需要做的工作就是用空字元替換掉換行符。


#處理大檔案,按行進行md5

import hashlib
import os

os.chdir('e:')
Buffsize=1024
count=0
with open("userdata.txt",encoding='utf-8') as a_file:
    lines=a_file.readlines(Buffsize)
    while lines:
        for line in lines:
            if line[-1]=='\n':#去掉行尾的換行符
                line=line.replace('\n','')
            if line[-1]=='\r':#去掉行尾的換行符
                line=line.replace('\r','')
            count=count+1
            print(count+':')
            print(line+'\n')
            h=hashlib.md5() #建立md5例項
            h.update(line.encode(encoding='utf-8'))
            hashmd5=h.hexdigest()
            #print(hashmd5)
            with open('test.txt', mode='a', encoding='utf-8') as testfile:
                testfile.write(hashmd5+'\n')
        lines=a_file.readlines(Buffsize)
print("finished")

試驗證明,減少輸出頻率可以大幅提高程式執行效率,但缺陷是一旦當機,可能無法確定檔案具體執行到哪一行