Skip to content
Advertisement

Python – Checking if the data in the files is the same

I have two lists where I have the same number of files. The files in both folders have the same names, for example:

Test1 folder:
files.txt
test.txt
name.txt

and so on. In the test2 folder I have the same named files. How can I compare for each file if the data in both files is the same? So whether:

test1 / files.txt = test2 / files.txt
test1 / test.txt = test2 / test.txt
test1 / name.txt = test2 / name.txt
import os
import difflib

test1_path = "C:/Users/admin/Desktop/test1"
test2_path = "C:/Users/admin/Desktop/test2"

if os.path.exists(test1_path):
    files_test1 = []
    for name in os.listdir(test1_path):
        if os.path.isfile(os.path.join(test1_path, name)):
            files_test1.append(os.path.join(test1_path, name))

if os.path.exists(test2_path):
    files_test2 = []
    for name in os.listdir(test2_path):
        if os.path.isfile(os.path.join(test2_path, name)):
            files_test2.append(os.path.join(test2_path, name))


Are you able to advise something?

Advertisement

Answer

You don’t need to perform two loops. One is enough. Also you can use the filecmp package to compare file contents.

import os
import filecmp  #  to compare files

test1_path = 'C:/Users/admin/Desktop/test1'
test2_path = 'C:/Users/admin/Desktop/test2'

if os.path.exists(test1_path) and os.path.exists(test2_path):
    all_same = True
    for name in os.listdir(test1_path):
        file1 = os.path.join(test1_path, name)
        file2 = os.path.join(test2_path, name)
        if (
                os.path.isfile(file1) and
                os.path.isfile(file2) and
                not filecmp.cmp(file1, file2)
        ):
            all_same = False
    print('all files are the same:', all_same)

Note that the code can be simplified if you know for sure that both directories contain the same file names.

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement