为了账号安全,请及时绑定邮箱和手机立即绑定

python中怎么快速比较2个文件中的内容

python中怎么快速比较2个文件中的内容

交互式爱情 2018-07-11 10:10:39
有2个文件,其中第2个文件是第一个文件中数据的增减量文件(第2个文件内数据与第1个大致相同,有些新增的数据,有些删减的数据,数据在文件内已经逐条换行),我要写一个函数,提取出在一个文件但不在另一个文件中的数据,函数如下:def filefind(src,des):sf = open(src)df = open(des)sfline = sf.readlines()dfline = df.read()tmp = []for lines in sfline:if dfline.find(lines) == -1:tmp.append(lines)print tmpelse:print dfline.find(lines)sf.close()df.close()return tmpsrc,des是2个文件路径,print语句用于测试,但运行时发现效率一般,因为文件内数据很多(250w条),所以一次大概要很长时间才能完成,有没有什么更高效率的方法?
查看完整描述

3 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

可以用 difflib库,下面给一个例子,具体需求自己研究

假如在同一个目录下有a.txt, b.txt 两个文本文件

a.txt 内容是

aaa

bbb


b.txt内容是

aaa

ccc


1234567import difflib = open('a.txt''U').readlines()= open('b.txt''U').readlines()diff = difflib.ndiff(a, b) sys.stdout.writelines(diff)



结果是:

  aaa

- bbb+ ccc


查看完整回答
反对 回复 2018-07-26
?
守候你守候我

TA贡献1802条经验 获得超10个赞

分成几块然后用好几个thread来比较呗

查看完整回答
反对 回复 2018-07-26
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

def filefine(src, des):
retrun set(open(des).readlines()) - set(open(src).readlines())
x64的话,应该没问题

查看完整回答
反对 回复 2018-07-26
  • 3 回答
  • 0 关注
  • 1812 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信