从两个不同的文件中读取行,如果找到匹配,则打印行号

问题描述:

我有两个文件。我想从file1中读取每行,并检查它是否与file2中的任何行匹配。我希望对file1中的每一行重复此操作,并打印在file2中找到匹配项的file1的行号。到目前为止,我有这个。它适用于每4-5线测试文件,但对超过60K线大文件时,我得到一个空白输出从两个不同的文件中读取行,如果找到匹配,则打印行号

num=0 
    f1 = open('pdataf.txt', 'r') 
    f2 = open('splitc.txt', 'r') 
    fo = open('op.txt', 'w') 
    for line1 in f1: 
     for line2 in f2: 
      num=num+1 
      if line1==line2: 
       nummy=str(num) 
       fo.write(nummy) 
       fo.write('\n') 
       break 
     continue 
    f1.close() 
    f2.close() 
+0

最快的选项取决于文件的大小。他们多大? –

+0

啊,没关系,这是在问题... –

首先,你必须在第8行语法错误,请用线print(num)。 我没有很多关于您的问题的信息,澄清这可能是一个好主意,但是我怀疑发生的情况是您在阅读的行尾有一个结束行字符"\n"

要摆脱这个字符,您可以使用rstrip()方法,如中所述。

所以,我建议通过更换代码:

num=0 
f1 = open('s.txt', 'r') 
f2 = open('p.txt', 'r') 
for line1 in f1: 
    line1 = line1.rstrip() 
    for line2 in f2: 
     line2 = line2.rstrip() 
     if line1==line2: 
      num=num+1 
      print(num) 
f1.close() 
f2.close() 
+0

嘿,谢谢!我只是修改了这个问题。该代码似乎适用于小文件,但不提供大文件。你能否再次阅读这个问题并帮忙? – user110327

+0

我真的需要更具体的描述你的问题。你有没有调试你的程序?它在哪一行崩溃?什么是错误? “它适用于小文件但对大文件没有提供什么”是什么意思? – Gaboik1

+0

我试着对5-6行文件进行修改后的代码,它给出了正确的输出,但对于60k +行的大文件,它正在崩溃。我试图调试。这就是我得到的: 程序已完成并将重新启动 – user110327