我试图制作一个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,所以很可能我犯了一个简单的错误)
答案 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正在读取换行符