• XSS.stack #1 – первый литературный журнал от юзеров форума

[Python][Private Keeper] Вычитаем бэды из общей базы

Choko2

CD-диск
Пользователь
Регистрация
11.09.2020
Сообщения
16
Реакции
11
Если пк завершил свою работу аварийно из за вин10 дефендер, а база уже наполовину отбручена. чтобы заново чек не перезапускать можно от общей базы вычесть бэды с помощью этого скрипта. all.txt минус логпасы bad.txt создаст вычтенный файл renew.txt. быстро и дешево. язык питон.
п.с. сравнивайте разделитель в олл и бэд перед запуском скрипта.

Python:
#Читаем общий файл с логпасами делаем из него список1, читаем файл
#с бэдами(сохраняется в проекте по мере выполнения брута) - делаем список2.
#вычитаем бэды из общего файла, и помещаем результат в список резалт.
with open('all.txt', 'r') as f:  
    list1 = f.read().splitlines()    
with open('bad.txt', 'r') as f2:    
    list2 = f2.read().splitlines()    
result=list(set(list1) ^ set(list2))

#Создаем файл ренью, и построчно записываем в него элементы списка резалт.
renew=open('renew.txt', 'w')
for element in result:
     renew.write(element)
     renew.write('\n')
renew.close()
 
Нормуль,то на что у разработчика мозгов так до сих пор и не хватило ;)
Тоже был удивлен, пока осваивал. Такой продуманный софт с кучей полезностей, и без обработки сценария авайрийного завершения.
 
Делал подобное для своих проектов, только вот так будет быстрее и меньше памяти жрать(на больших файлах заметно):
Python:
result = frozenset(list1).difference(list2)
По хорошему еще файл гудов нужно исключить.
 
Чуть более питоник вэй и чуть шустрее
Python:
with open('all.txt', 'r', encoding='utf-8') as f:
    al = [row.strip() for row in f]

with open('bad.txt', 'r', encoding='utf-8') as f2:
    bad = [row.strip() for row in f2]

with open('renew.txt', mode='w') as f3:
    for element in sorted(list(set(al) ^ set(bad))):# если сортировка не нужна, то просто оставляем так - for element in list(set(al) ^ set(bad)):
        f3.write(element)
        f3.write('\n')
        f3.flush()#сразу пишем на диск, без питонячьего заполнения внутреннего кеша
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх