differ工具的安装(windows)

重新安装步骤:

1、下载软件:只用了diffutils-2.8.7-1.exe以及patch-2.5.9-7-setup.exe。大家可以使用别的版本。

2、安装软件:这里安装到 D:\Program Files (x86)\GnuWin32

3、设置host:进入到C:\Windows\System32\drivers\etc,添加:192.168.1.100svnhost

4、设置环境变量:path中添加:D:\Program Files (x86)\GnuWin32\bin; 

5   在e盘中建立2个文件夹分别是base和work,再把安装包下的differ.bat批处理文件拷贝到e盘根目录

6、采用bat脚本来比较(打开控制台,进入e盘,然后输入如下命令):

differ.bat  base work now.diff

这样就生成了一个now.diff来区分两个文件夹的内容。


以上步骤或许有的可以省略。

前边一直不能使用,当初错手删除了安装后的文件,而且发现etc/host下的为192.168.1.100 svnhost

被用#注释了。但这个影响不大,在家中安装时发现没有这句也可以。

为同事安装的diff不能使用,因为没有在path下添加路径。


所生成的diff文件可以使用记事本之类的文件打开,不过这样就有所损失了。如果你的机子有安装svn,可以使用

TortoiseUDiff.exe来打开,会有高亮显示。

好的,下面是代码实现: ```python import tkinter as tk from tkinter import filedialog from difflib import Differ class TextCompare(tk.Frame): def __init__(self, master): super().__init__(master) self.master = master self.master.title("文本比较工具") self.master.geometry("800x600") self.master.resizable(True, True) self.grid(sticky="NEWS") self.create_widgets() def create_widgets(self): # 创建菜单栏 menubar = tk.Menu(self.master) filemenu = tk.Menu(menubar, tearoff=0) filemenu.add_command(label="打开文件1", command=self.open_file1) filemenu.add_command(label="打开文件2", command=self.open_file2) menubar.add_cascade(label="文件", menu=filemenu) self.master.config(menu=menubar) # 创建滚动条控件 self.vbar = tk.Scrollbar(self, orient=tk.VERTICAL) self.vbar.grid(row=0, column=2, sticky="NS") self.left_hbar = tk.Scrollbar(self, orient=tk.HORIZONTAL) self.left_hbar.grid(row=1, column=0, sticky="EW") self.right_hbar = tk.Scrollbar(self, orient=tk.HORIZONTAL) self.right_hbar.grid(row=1, column=1, sticky="EW") # 创建文本框控件 self.left_text = tk.Text(self, wrap=tk.NONE, yscrollcommand=self.vbar.set, xscrollcommand=self.left_hbar.set) self.left_text.grid(row=0, column=0, sticky="NEWS") self.left_hbar.config(command=self.left_text.xview) self.vbar.config(command=self.scroll_text) self.left_text.config(state=tk.DISABLED) self.right_text = tk.Text(self, wrap=tk.NONE, yscrollcommand=self.vbar.set, xscrollcommand=self.right_hbar.set) self.right_text.grid(row=0, column=1, sticky="NEWS") self.right_hbar.config(command=self.right_text.xview) self.right_text.config(state=tk.DISABLED) def open_file1(self): file_path = filedialog.askopenfilename() if file_path: with open(file_path, encoding="utf-8") as f: self.content1 = f.readlines() self.show_content() def open_file2(self): file_path = filedialog.askopenfilename() if file_path: with open(file_path, encoding="utf-8") as f: self.content2 = f.readlines() self.show_content() def show_content(self): if hasattr(self, "content1") and hasattr(self, "content2"): self.left_text.config(state=tk.NORMAL) self.right_text.config(state=tk.NORMAL) differ = Differ() diff = list(differ.compare(self.content1, self.content2)) self.left_text.delete("1.0", tk.END) self.right_text.delete("1.0", tk.END) for line in diff: if line.startswith("-"): self.left_text.insert(tk.END, line[2:], "delete") elif line.startswith("+"): self.right_text.insert(tk.END, line[2:], "insert") else: self.left_text.insert(tk.END, line[2:]) self.right_text.insert(tk.END, line[2:]) self.left_text.tag_config("delete", foreground="red") self.right_text.tag_config("insert", foreground="blue") self.left_text.config(state=tk.DISABLED) self.right_text.config(state=tk.DISABLED) def scroll_text(self, *args): self.left_text.yview(*args) self.right_text.yview(*args) if __name__ == "__main__": root = tk.Tk() app = TextCompare(root) app.mainloop() ``` 解释一下代码: 我们首先定义了一个 TextCompare 类,这个类继承自 tk.Frame,并在 __init__ 方法中初始化了界面,包括菜单栏、滚动条控件和文本框控件等。 在 create_widgets 方法中,我们创建了菜单栏、滚动条控件和文本框控件,并将它们放置在界面上。 在 open_file1 和 open_file2 方法中,我们通过 filedialog 模块打开文件对话框,选择需要比较的两个文件,并将它们的内容读取到内存中。 在 show_content 方法中,我们使用 difflib 模块中的 Differ 类来比较两个文件的内容,得到它们的差异,并将差异显示在界面上。其中,我们用红色标记删除内容,用蓝色标记新增内容。 最后,在 scroll_text 方法中,我们将两个文本框的垂直滚动条控件关联起来,以便它们能够同时滚动。 这样,我们就完成了一个简单的文本比较工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值