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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中怎么快速比较2个文件中的内容相关的知识,希望对你有一定的参考价值。

有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 tmp
else:
print dfline.find(lines)
sf.close()
df.close()
return tmp
src,des是2个文件路径,print语句用于测试,但运行时发现效率一般,因为文件内数据很多(250w条),所以一次大概要很长时间才能完成,有没有什么更高效率的方法?

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

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

a.txt 内容是

aaa

bbb


b.txt内容是

aaa

ccc


import difflib

a = open('a.txt', 'U').readlines()
b = open('b.txt', 'U').readlines()
diff = difflib.ndiff(a, b)

sys.stdout.writelines(diff)



结果是:

  aaa

- bbb+ ccc

参考技术A 分成几块然后用好几个thread来比较呗 参考技术B def filefine(src, des):
retrun set(open(des).readlines()) - set(open(src).readlines())
x64的话,应该没问题
参考技术C 没使用过这个功能

Beyond Compare文件怎么比较

参考技术A

Beyond Compare比较文件夹的具体操作步骤如下:

步骤一 运行Beyond Compare,点击“文件夹比较”按钮,将会打开Beyond Compare 4比较文件夹的界面。

步骤二 在左右两边的下拉框中输入文件夹路径,下方将显示路径目录下所有文件夹和文件。

步骤三 选中一个文件夹,点击工具栏上的操作->比较内容,将会弹出“比较内容”对话框,你可以选择“CRC比较”、“二进制比较”等,点击“开始”即可进行比较。

步骤四 Beyond Compare将会对文件夹中的所有文件进行逐一对比,相同的文件以“=”显示,不同的文件以“≠”显示。

以上是关于python中怎么快速比较2个文件中的内容的主要内容,如果未能解决你的问题,请参考以下文章

Python:比较 2 个 csv 文件中的 3 列,如果相等则输出

python中怎么读取文件内容

python怎么提取出文件里的指定内容

将2个文件内容与shell脚本中的特定值进行比较

怎么在Beyond Compare中删除表格中的列表数据

比较python中的2个文件并打印不匹配的文本