天天看點

python比較兩個檔案内容是否一樣_python比較兩個檔案的差異

使用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)

三、對比結果

python比較兩個檔案内容是否一樣_python比較兩個檔案的差異
python比較兩個檔案内容是否一樣_python比較兩個檔案的差異