2011-11-28 51 views
3

有沒有簡單的方法來比較Python中的2個文件而忽略某些行?我想忽略Python風格的註釋(以#開頭的行)並檢查所有其他行是否相同。我想總會一行一行地讀取文件並手動比較。在Python中比較2個文件而忽略評論

回答

3

首先從兩個文件中刪除註釋。然後使用Differ來比較結果文件。

1

你只是想報告它們是否相同或不同?或者你也想知道他們不同的第一位,或者你想知道他們不同的所有地方?

我假設你想知道他們不同的第一行。首先,一個輔助函數來讀取非註釋行,以及包括行號信息:

def read_non_comment_lines(infile): 
    for lineno, line in enumerate(infile): 
     if line[:1] != "#": 
      yield lineno, line 

比較兩個輸入流,當它們是不同的報告:

import itertools 
with open(filename1) as f1: 
    with open(filename2) as f2: 
     for (lineno1, line1), (lineno2, line2) in itertools.izip(
         read_non_comment_lines(f1), read_non_comment_lines(f2)): 
      if line1 != line2: 
       print "Different at %s:%d and %s:%d" % (filename1, lineno1+1, filename2, lineno2+1) 
       break 
     else: 
      print "They are identical." 
+0

報告無論他們是在相同或不同的罰款。謝謝!。 – garsh0p

+0

這種情況比較簡單。它與上面的代碼相同,只是沒有行號跟蹤。 –