3
有沒有簡單的方法來比較Python中的2個文件而忽略某些行?我想忽略Python風格的註釋(以#開頭的行)並檢查所有其他行是否相同。我想總會一行一行地讀取文件並手動比較。在Python中比較2個文件而忽略評論
有沒有簡單的方法來比較Python中的2個文件而忽略某些行?我想忽略Python風格的註釋(以#開頭的行)並檢查所有其他行是否相同。我想總會一行一行地讀取文件並手動比較。在Python中比較2個文件而忽略評論
首先從兩個文件中刪除註釋。然後使用Differ
來比較結果文件。
你只是想報告它們是否相同或不同?或者你也想知道他們不同的第一位,或者你想知道他們不同的所有地方?
我假設你想知道他們不同的第一行。首先,一個輔助函數來讀取非註釋行,以及包括行號信息:
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."
報告無論他們是在相同或不同的罰款。謝謝!。 – garsh0p
這種情況比較簡單。它與上面的代碼相同,只是沒有行號跟蹤。 –