Прежде всего, я искал в Интернете и stackoverflow около 3 дней и не нашел ничего, что искал.Получить разницу между двумя файлами
Я делаю еженедельный аудит безопасности, когда я возвращаю CSV-файл с IP-адресами и открытыми портами. Они выглядят так:
20160929.csv
10.4.0.23;22
10.12.7.8;23
10.18.3.192;23
20161006.csv
10.4.0.23;22
10.18.3.192;23
10.24.0.2;22
10.75.1.0;23
Разница заключается в том: 10.12.7.8:23 был закрыт. 10.24.0.2:22 и 10.75.1.0:23 открыт.
Я хочу, чтобы скрипт, который выводит меня:
[-] 10.12.7.8:23
[+] 10.24.0.2:22
[+] 10.75.1.0:23
Как я могу сделать сценарий, как это? Я пробовал свой difflib, но это не то, что мне нужно. Мне нужно также написать это позже или отправить этот вывод в виде почты, для которой у меня уже есть скрипт.
Я не могу использовать Unix, потому что в нашей компании мы имеем среду Windows и не можем использовать другую ОС. Поэтому я не могу использовать diff
или некоторые другие отличные инструменты.
Это моя первая попытка:
old = set((line.strip() for line in open('1.txt', 'r+')))
new = open('2.txt', 'r+')
diff = open('diff.txt', 'w')
for line in new:
if line.strip() not in old:
diff.write(line)
new.close()
diff.close()
Это моя вторая попытка
old = set((line.strip() for line in open('1.txt', 'r+')))
new = open('2.txt', 'r+')
diff = open('diff.txt', 'w')
for line in new:
if line.strip() not in old:
diff.write(line)
new.close()
diff.close()
Если строки могут быть в любом порядке, создание наборов для каждого файла будет вариантом. Что вы уже пробовали? – Caramiriel
@Caramiriel Это оба: https://paste.ee/p/7KNxv и https://paste.ee/p/kPOle Надеюсь, что paste.ee в порядке. –
@ e4c5 Я знаю, я относительно новичок в написании сценариев с питоном, и я разместил эти два источника выше. Для всего, что я нахожу объяснение, а затем я использую это, чтобы закодировать его по-своему. Но я ничего не нашел по этому поводу. - Я узнал, как я могу получить результат, если есть какая-то разница между одной строкой в обоих файлах, но не если они являются случайным порядком, как в моем примере. –