python比較兩個檔案的差異

2021-08-22 05:51:04 字數 4012 閱讀 7386

《轉》

使用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傳入兩個需要對比的檔案

"""

importdifflib

importargparse

importsys

# 建立開啟檔案函式,並按換行符分割內容

defreadfile(filename):

try:

withopen(filename,'r') as filehandle:

text=filehandle.read().splitlines()

returntext

exceptioerror as e:

print("read file error:", e)

sys.exit()

# 比較兩個檔案並輸出到html檔案中

defdiff_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檔案中

withopen('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)

三、對比結果

Powershell比較兩個檔案內容差異

powershell有乙個現成的可以匹配兩個文字內容差異的工具compare object,方便快捷,我們怎麼使用它呢,舉乙個例子,有兩個檔案file1和file2,匹配一下兩個檔案的不同 file1.txt 12 3file2.txt 12 3451 2 3 4 5 6 7 ps c mailbo...

使用shell比較兩個文字的差異

一般工作中會遇到比較兩個文字檔案的不同,類似於第二天新增資料 或者修改資料統計。我查閱資料查到一下兩種方法。說明 1 2 為要比較的兩個文字檔案 此處使用引數代替 1 grep f v f 1 2 sort uniq f 範本檔案 或 file 範本檔案 指定範本檔案,其內容含有乙個或多個範本樣式,...

vim 比較兩個檔案

1.使用vim的比較模式開啟兩個檔案 vim d file1 file2 或vimdiff file1 file2 2.如果已經開啟了檔案file1,再開啟另乙個檔案file2進行比較 vert diffsplit file2 如果沒有用vert命令,diffsplit則會分上下兩個視窗。3.如果已...