文件相似性检查器使用Python 2.7.15

时间:2018-06-05 21:20:36

标签: python-2.7 file file-io similarity

我试图制作一个python脚本,将2个不同文件的相似性输出到第三个文件。我知道有一种简单的方法可以通过使用嵌套for循环检查两个文件的每一行来完成此操作,但我选择不这样做,因为我试图让它尽可能快地运行。这是因为我正在使用半大文件(每个100-200MB)并检查两个文件的每一行所需的时间比我偶然发现的要长得多:

我找到的一个快速替代方法是导入mmap并使用.find()函数检查第一个文件中的每一行

import mmap
import time
RESULTS = open('sims.txt', 'w')
f1 = open('file1.txt', 'r')
f = open('file2.txt')
f2 = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
for line1 in f1:
    if len(line1) > 3:
        if f2.find(line1) != -1:
            RESULTS.write(line1)
RESULTS.close()
f1.close()

这种方法非常快速地读取第二个文件,并且没有语法错误,但它只是没有正常运行。以下是file1.txt和file2.txt

的示例

文件1:

orange

hotdog
pig

file2的:

apple
mango
orange
pig

hotdog

sims.txt上的输出应为橙色和热狗,但sims.txt始终为空白。如果有办法解决这个问题,请告诉我,或者在保持find()函数速度的情况下更好的方法,或者如果它不可能。谢谢!

(P.S。我刚开始在2-3天前学习python,所以很可能我犯了一个简单的错误)

1 个答案:

答案 0 :(得分:0)

您可以使用if line1 in f:

进行测试
import time
RESULTS = open('sims.txt', 'w')
f1 = open('file1.txt', 'r')
f = open('file2.txt')
for line1 in f1:
    if len(line1) > 3:
        if line1 in f:
            RESULTS.write(line1)
RESULTS.close()
f1.close()

你必须小心,因为line1正在读取换行符