Форум сайта python.su
0
Добрый день ! Помогите пожалуйста. Я ищу готовый скрипт для допиливания под свои нужды. В общем нужен скриптик, который будет сравнивать строки из двух файлов и удалять повторения строк из первого файла (OLD.txt) во втором файле (NEW.txt). Нужно для автоматизации на работе некоторых задач. Буду очень благодарен откликнувшимся !
Офлайн
0
input = open('in.txt', 'r') output = open('out.txt', 'w') linesarray = input.readlines() input.close() seen = [] for line in linesarray: if line not in seen: seen.append(line) output.writelines(seen)
Отредактировано Madcap (Сен. 29, 2015 22:24:02)
Офлайн
857
Вообще, это всё через sed + sort + grep быстрее делается.
Через sed выделяются ip из первого файла и копируются в новый файл.
Через sort с опцией -u в новом файле остаются только уникальные ip.
Через grep с опциями -f и -v из второго файла выводятся только строки без отфильтрованных адресов.
И всё это можно сделать за одну строку: новый файл и его фильтрованная версия подаётся по каналам (он даже не сохраняется).
Отредактировано py.user.next (Сен. 30, 2015 05:42:15)
Офлайн
6
Например вот так:
new_filename = 'NEW.txt' old_filename = 'OLD.txt' def get_ip(line): return line.split(':')[0] old_ips = set([get_ip(line) for line in open(old_filename)]) result = [line for line in open(new_filename) if get_ip(line) not in old_ips] with open(new_filename, 'w') as out: out.write(''.join(result))
Отредактировано giveback (Сен. 30, 2015 14:37:11)
Офлайн