在编写代码的过程中,可能需要比较和查看两个代码文件之间的差异。 用肉眼看很费工夫,比较起来很难发现区别。 例如,如果在运行程序时遇到错误,可以将其与以前编写的代码进行比较,也可以参考别人的代码,如果有什么地方出错,可以在该程序中完成,节省时间和精力。
difflib模块
difflib模块是python的标准库模块,不需要安装。 用于比较文本和文件之间的差异,并输出HTML格式的比较分析结果报告。 也可以使用此模块比较代码和配置文件之间的差异。 在版本控制方面,difflib模块非常有用。
实战代码
创建比较文件代码
)1)首先引入difflib模块。 代码如下
导入差异列表
import tkinter as tk
import tkinter.filedialog
)2)定义选择文件函数,调用tkinter模块的文件诊断对话框实现文件对话框。 代码如下。
#选择文件
defbutton1(: )
全局文件1
file1=tk.file dialog.ask open filename (
txt _ path1. set (文件1 ) )。
#选择文件
defbutton2(: )
全局文件2
file2=tk.file dialog.ask open filename (
txt _ path2. set (文件2 ) )。
)3)定义比较文件的函数,主要使用difflib模块。 代码如下。
defdiff(:
withopen(file1,encoding='utf-8 ' ) as f1,open ) file2,encoding='utf-8 ' ) as f2:
text1=f1.readlines (
text2=f2.readlines (
d=difflib.HtmlDiff (
withopen('result1.html ',' w ',encoding='utf-8 ' ) as f:
f.write(d.make_file ) text2,text2) )
设计比较窗口
创建主窗口
设置窗口标题栏的名称、大小
在主窗口中添加标签、文本框和命令按钮
主窗口循环显示
#创建主窗口
窗口=tk.tk (
#设置窗口标题栏名称
window.title (文件比较工具V1.0 ) )。
#设定窗口的大小
window.geometry('650x200 ' ) )。
#在主窗口中添加标签
label=tk.label (窗口,文本='请选择要比较的文件。' ,fg='blue ',font=('Arial ',12 ) ).place ) y=30,y=30 ) )
L1=tk.label (窗口,文本='原始文件:',font=('Arial ',12 ).place (y=80,y=80 ) ) )。
L2=tk.label (窗口,文本='对象文件:',font=('Arial ',12 ) ).place (x=30,y=110 ) ) ) )。
#在主窗口中添加文本框
txt_path1=tk.StringVar (
text1=tk.entry(window,textvariable=txt_path1,show=None,width=60 ) )
txt_path2=tk.StringVar (
text2=tk.entry (窗口,textvariable=txt_path2,show=None,width=60 ) )
text1.place(x=120,y=80 ) )。
text2.place(x=120,y=110 ) )。
#在主窗口中添加命令按钮
button1=tk.button(window,width=8,height=1,text='选择文件',bg='skyblue ',command=button1).place )
button2=tk.button(window,width=8,height=1,text='选择文件',bg='skyblue ',command=button2).place )
button3=tk.button (窗口,窗口=20,height=1,text='文件比较',fg='red ',bg='orange ',command=Diff
#主窗口循环显示
window.mainloop (
程序的执行
运行程序,效果如图1所示,单击“选择文件”按钮选择要比较的文件,单击“文件比较”按钮自动生成文件比较分析报告,效果如图2所示,该文件为程序
比较工具. png
选择文件. png
差分文件结果. png