Форум сайта python.su
0
Есть два файла. Шаблон (в котором могут быть разные значения, но я уже вбил только цифры что бы было удобнее и исключить проблемы кодировок) и проверяемый файл. Нужно выбрать в отдельный лог только исключения из первого файла (например первый файл 1 2 3 4, второй файл - 3, должно упасть в лог 1, 2, 4)
https://pastebin.com/4mj7UVJE код на пастебине
прикрепил файлы в архиве.
До тысячи строк работает более менее. Затем начинает выбивать одинаковые записи, которые есть и в шаблоне и в проверяемом. Сделал проверку в экселе на равенство (отсортировал по возрастанию и через ложь истину проверил) = все срабатывает. По результатам этого скрипта в тех же файлах полно отсутствий. в чем я ошибся?
Прикреплённый файлы:
сверка с 1с.rar (15,7 KБ)
Офлайн
124
не знаю на сколько это быстро работает и в множестве будут только уникальные значения
with ( open('/home/xam/Загрузки/сверка с 1с/1.txt', 'r') as f1, # там 1 2 3 4 , по числу в строке open('/home/xam/Загрузки/сверка с 1с/2.txt', 'r') as f2 # там число 3 ): s1 = {i.strip() for i in f1.readlines()} s2 = {i.strip() for i in f2.readlines()} print(s1) print('\n==================\n') print(s2) print('\n==================\n') print(s1 - s2)
{'2', '4', '1', '3'}
==================
{'3'}
==================
{'2', '4', '1'}
Отредактировано xam1816 (Июль 19, 2022 12:17:50)
Офлайн
568
JonDou12
если я правильно понял задачу, то я бы сделал так
$ comm -31 test1.txt test2.txt
Отредактировано FishHook (Июль 19, 2022 12:26:04)
Офлайн
0
FishHookА это терминал линукса? у меня просто на винде стоит. и это не похоже на код питона (((
JonDou12если я правильно понял задачу, то я бы сделал так
Офлайн
0
xam1816Спасибо. скорость не особо важна. Так что ваш пример кажется работает) спасибо.а то что то везде про этот difflib натыкаюсь, а ваше решение проще и понятнее.
не знаю на сколько это быстро работает и в множестве будут только уникальные значения
c = s1-s2 f = open('out_difference.txt','w', encoding="utf-8") for item in c: f.write("%s\n" % item) f.close()
Отредактировано JonDou12 (Июль 19, 2022 12:46:32)
Офлайн
568
JonDou12ага
А это терминал линукса?
Офлайн