2016-09-24 47 views
0

我有兩個文件。我想從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

啊,沒關係,這是在問題... –

回答

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

相關問題