Let us look at how to compare two text files in Python in this tutorial. We will use a variety of approaches to try to solve this problem.
Let us consider the below two text files as an example:
demotextfile_1.txt:
hello this is Python-programs good morning all Then give a start to it welcome to the greatest python coding platform
demotextfile_2.txt:
hello this is Python-programs Are you good at coding? Then give a start to it good morning all
Program to Compare Two Text Files in Python
Below are the ways to compare two text files in Python:
Method #1: Using filecmp.cmp() Method
Python has a filecmp module that allows you to compare files. The filecmp.cmp() function returns a three-list of matched, errors, and mismatched files. filecmp.cmp() has two modes of operation.
shallow mode: In this mode, only file metadata such as size, modified date, and so on are compared.
deep mode: The content of the files is compared in this mode.
Approach:
- Import filecmp module using the import keyword
- Import os module using the import keyword
- Give the first textfile as static input and store it in a variable.
- Give the second textfile as static input and store it in another variable.
- Pass the above given first and second text files as arguments to the cmp() function of the filecmp module to compare metadata in shallow mode
- Returns True if both the textfiles are the same else False
- Pass the above given first and second text files as arguments to the cmp() function of the filecmp module to comapre content in deep mode( shallow=False)
- Returns True if both the textfiles are the same else False.
- The Exit of the Program.
Below is the implementation:
# Import filecmp module using the import keyword import filecmp # Import os module using the import keyword import os # Give the first textfile as static input and store it in a variable. Textfile_1 = "demotextfile_1.txt" # Give the second textfile as static input and store it in another variable. Textfile_2 = "demotextfile_2.txt" # Pass the above given first and second text files as arguments to the cmp() function # of the filecmp module to compare metadata in shallow mode # Returns True if both the textfiles are same else False rslt = filecmp.cmp(Textfile_1, Textfile_2) print(rslt) # Pass the above given first and second text files as arguments to the cmp() function # of the filecmp module to comapre content in deep mode( shallow=False) # Returns True if both the textfiles are same else False rslt = filecmp.cmp(Textfile_1, Textfile_2, shallow=False) print(rslt)
Output:
False False
Method #2: Using line by line Comparision
Approach:
- Open the first text file in read-only mode using the open() function by passing filename/path, mode as arguments to it and store it in a variable.
- Open the second text file in read-only mode using the open() function by passing filename/path, mode as arguments to it and store it in another variable.
- Take a variable and initialize its value with 0 which represents the line number.
- Loop in each line of the given first text file using the for loop.
- Increment the above initialized variable value by 1 which holds the line number.
- Loop in each line of the given second text file using the other nested for loop.
- Check if each line of the first text file is equal/similar to the corresponding line of the second text file using the if conditional statement.
- If it is true, then print the respective line number.
- Print Both the lines of given two text file are the same.
- Else print the respective line number and corresponding lines of both the text files.
- Close the given first text file using the close() function.
- Close the given second text file using the close() function.
- The Exit of the Program.
Below is the implementation:
# Open the first text file in read-only mode using the open() function
# by passing filename/path, mode as arguments to it and store it in a variable.
Textfile_1 = open("demotextfile_1.txt", "r")
# Open the second text file in read-only mode using the open() function
# by passing filename/path, mode as arguments to it and store it in another variable.
Textfile_2 = open("demotextfile_2.txt", "r")
# Take a variable and initialize its value with 0 which represents the line number
i = 0
# Loop in each line of the given first text file using the for loop
for f1_line in Textfile_1:
# Increment the above initialized variable value by 1 which holds the line number
i += 1
# Loop in each line of the given second text file using the other nested for loop
for f2_line in Textfile_2:
# Check if each line of the first text file is equal/similar to the corresponding line
# of the second text file using the if conditional statement
if f1_line == f2_line:
# If it is true, then print the respective line number
print("line_",i,": ")
# Print Both the lines of given two text file are the same
print("Both the lines of given two text file are the same")
print()
else:
# Else print the respective line number and corresponding lines of
# both the text files
print("line_",i,": ")
print("Textfile_1: ", f1_line)
print("Textfile_2: ", f2_line)
break
# Close the given first text file using the close() function
Textfile_1.close()
# Close the given second text file using the close() function
Textfile_2.close()Output:
line_ 1 : Both the lines of given two text file are the same line_ 2 : Textfile_1: good morning all Textfile_2: Are you good at coding? line_ 3 : Both the lines of given two text file are the same line_ 4 : Textfile_1: welcome to the greatest python coding platform Textfile_2: good morning all