使用python腳本比較兩個檔案的差異内容并輸出到html文檔中,可以通過浏覽器打開檢視。
一、腳本使用對比nginx配置檔案的差異
python python_diff_file.py -f1 web26.conf -f2 web103.conf
二、腳本内容#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
1.difflib的HtmlDiff類建立html表格用來展示檔案差異,通過make_file方法
2.make_file方法使用
make_file(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
用來生成一個包含表格的html檔案,其内容是用來展示差異。
fromlines和tolines,用于比較的内容,格式為字元串組成的清單
fromdesc和todesc,可選參數,對應的fromlines,tolines的差異化檔案的标題,預設為空字元串
context 和 numlines,可選參數,context 為True時,隻顯示差異的上下文,為false,顯示全文,numlines預設為5,
當context為True時,控制展示上下文的行數,當context為false時,控制不同差異的高亮之間移動時“next”的開始位置
3.使用argparse傳入兩個需要對比的檔案
"""
import difflib
import argparse
import sys
# 建立打開檔案函數,并按換行符分割内容
def readfile(filename):
try:
with open(filename, 'r') as fileHandle:
text = fileHandle.read().splitlines()
return text
except IOError as e:
print("Read file Error:", e)
sys.exit()
# 比較兩個檔案并輸出到html檔案中
def diff_file(filename1, filename2):
text1_lines = readfile(filename1)
text2_lines = readfile(filename2)
d = difflib.HtmlDiff()
# context=True時隻顯示差異的上下文,預設顯示5行,由numlines參數控制,context=False顯示全文,差異部分顔色高亮,預設為顯示全文
result = d.make_file(text1_lines, text2_lines, filename1, filename2, context=True)
# 内容儲存到result.html檔案中
with open('result.html', 'w') as resultfile:
resultfile.write(result)
# print(result)
if __name__ == '__main__':
# 定義必須傳入兩個參數,使用格式-f1 filename1 -f2 filename
parser = argparse.ArgumentParser(description="傳入兩個檔案參數")
parser.add_argument('-f1', action='store', dest='filename1', required=True)
parser.add_argument('-f2', action='store', dest='filename2', required=True)
given_args = parser.parse_args()
filename1 = given_args.filename1
filename2 = given_args.filename2
diff_file(filename1, filename2)
三、對比結果