Skip to main content

Complete file compare tool/software in python

Beyondcompare project in python 


File compare tool/software in python. It works like beyondcompare software. It is a file compare project made by me. Kindly go through the code. It selects the files dynamically using file dialogue option using button. The file absolute path is seen on textboxes and the compare button generates the difference between two files are prints difference in the third file. The GUI is made in 'tkinter' library of python. In the below mentioned program/project you will learn 

1) how to design GUI in python
2) how to reply to button click events
3) how to bind the values(input of file dialogue from user) to textboxes
4) how to use file dialogue
5) how to get directory path using full file path
6) how to get file name from full file path
7) logic to find the difference between two files

Below is the code in which user selects 2 different files as a input and it will generate the difference and finally print the difference in another file. You can generate the difference in any file extension as you want. You have to explicitly mention the file extension in the code. 

The code works for as many numbers of records or huge text data. Also the program execution is very faster.

Here is the code:


from tkinter import filedialog
from tkinter import *
import os

window = Tk()
window.title("My File Compare...")
window.geometry('750x200')
lbl1 = Label(window, text="Select Old File Path")
lbl1.grid(column=0, row=0)
txt1 = Entry(window,width=80)
txt1.grid(column=1, row=0)
lbl2 = Label(window, text="Select new File Path")
lbl2.grid(column=0, row=2)
txt2 = Entry(window,width=80)
txt2.grid(column=1, row=2)

def browsefunc1():
    filename = filedialog.askopenfilename()
    print(filename)
    txt1.delete(0,END)
    txt1.insert(0,filename)
    
def browsefunc2():
    filename = filedialog.askopenfilename()
    print(filename)
    txt2.delete(0,END)
    txt2.insert(0,filename)
    
btn = Button(window, text="choose old file", command=browsefunc1)
btn.grid(column=2, row=0)
btn1 = Button(window, text="choose new file", command=browsefunc2)
btn1.grid(column=2, row=2)


def compare_files():
    first = txt1.get()
    second = txt2.get()
    old = open(first,'r')
    new = open(second,'r')
    #in new but not in old
    new_extra = set(new) - set(old)
    with open(first) as f1:
        first_line1 = f1.readline()    
        print(first_line1)
    with open(first, 'a') as file_out:
        file_out.write(first_line1)
        print(first_line1)
    # write to output files    
    with open(os.path.dirname(os.path.abspath(second))+'/'+os.path.splitext(os.path.split(second)[1])[0]+'_difference.txt', 'a') as file_out2:
        for line2 in new_extra:
            file_out2.write(line2)
            print(first_line1)

btn2 = Button(window, text="Compare file", command=compare_files)
btn2.grid(column=1, row=3)
window.mainloop()

Comments

Popular posts from this blog

Add, remove, search an item in listview in C#

Below is the C# code which will help you to add, remove and search operations on listview control in C#. Below is the design view of the project: Below is the source code of the project: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Treeview_control_demo {     public partial class Form2 : Form     {         public Form2()         {             InitializeComponent();             listView1.View = View.Details;                   }         private void button1_Click(object sender, EventArgs e)         {             if (textBox1.Text.Trim().Length == 0)...

display files and directories in Listview

Below is the C# code which displays all files and directories in listview control with their file size and creation date. If it is file then it also displays the extension of the file e.g. .txt, .jpg etc Below is the design view of the project: Listview to display files and directories with size and date created Below is the source code of the project: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace search_in_listview {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();                   }         private void button1_Click(object sender, EventArgs ...

Add worklog in Jira using Python

 Below is the Python code to add the worklog in Jira. You need to install a request library for this. Here is the code: import requests from requests.auth import HTTPBasicAuth import json url = "https://your jira address here/rest/api/2/issue/ticket_number/worklog" auth = HTTPBasicAuth("username", "jira access token") headers = {     "Accept": "application/json",     "Content-Type": "application/json" } payload = json.dumps({     "comment": {         "content": [             {                 "content": [                     {                         "text": "This is for QA Testing",                         "type": "text"                     } ...