Сравните 2 файла и покажите различия, если таковые имеются - PullRequest
0 голосов
/ 09 июля 2020

Итак, у меня есть функция, которая сравнивает 2 файла и показывает любые различия, и она отлично работает. Однако, если нет различий, я хочу, чтобы это также было указано.

Код

dFile = "file1.txt"
master = "file2.txt"

with open(dFile) as f:
    t1 = f.read().splitlines()
    t1s = set(t1)

with open(master) as f:
    t2 = f.read().splitlines()
    t2s = set(t2)

for diff in t1s-t2s:
    if t1.index(diff) != "":
        print("Found Discrepancy")
        print("Line: " + str(t1.index(diff)), diff)
    else:
        print("No issues found")

Вывод, когда есть разница:

Found Discrepancy

Line: 1  Testing Differences

Process finished with exit code 0

Вывод при НЕТ разницы:

Process finished with exit code 0

Ответы [ 2 ]

1 голос
/ 09 июля 2020

У вас есть такой код -

for diff in t1s-t2s:
    if t1.index(diff) != "":
        print("Found Discrepancy")
        print("Line: " + str(t1.index(diff)), diff)
    else:
        print("No issues found")

Здесь, если нет различий, l oop никогда не будет выполняться, и вы никогда не напечатаете No issues found.

Вы должны сделать это как -

if not t1s-t2s :
    print("No issues found")
for diff in t1s-t2s:
    if t1.index(diff) != "":
        print("Found Discrepancy")
        print("Line: " + str(t1.index(diff)), diff)

Это не распечатает никаких проблем, если файл такой же, иначе выведите несоответствие

1 голос
/ 09 июля 2020

Вы можете изменить конец на

if not (t1s-t2s):
    print("No issues found")
for diff in t1s-t2s:
    if t1.index(diff) != "":
        print("Found Discrepancy")
        print("Line: " + str(t1.index(diff)), diff)

Это будет работать, если t1s - t2s будет оцениваться как истинное, только если оно не пусто. И наоборот, если он пуст, тело for l oop не будет выполнено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...