python3文本文件按行哈希

      由于项目需要对一个文本文件按行哈希,今天研究了一下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")

试验证明,减少输出频率可以大幅提高程序执行效率,但缺陷是一旦宕机,可能无法确定文件具体执行到哪一行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值