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
Post a Comment