Как отсортировать данные в txt файле?
В первом файле содержатся разные (одинаковых нет) ip адреса Во втором содержаться записи по типу:
55.145.78.252 28/Feb/2020:06:27:33 +0100 "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1)"
Как отсортировать данные во втором файле, чтобы они были отсортированы по ip из первого файла? Например был взят 55.145.78.252 адрес и во втором файле с таким ip есть 10 записей по всему файлу. Чтобы он записал эти записи и дальше перешел к следующему адресу
Ответы (3 шт):
Алгоритм таков(не самый лучший наверное): 1)Берете ip из первого файла 2)Сравниваете все записи из второго файла с выбранным ip 3)Найденные записи записываете в массив 4)Массив записываете в новый конечный файл 5)зацикливаете эти действия,только массив с новыми данными вы дозаписываете в конечный файл
Отсортировать один раз свой второй файл по ip. Можно еще предварительно сгруппировав. Потом в цикле ищете, что вам надо. Если циклов много - так будет точно быстрее, чем линейно просматривать неотсортированный файл при каждом проходе цикла.
with open("ips.txt", "r") as fp:
ips = list(map(str.rstrip, fp)) # Считываем из файла все адреса
with open("records.txt", "r") as fp:
records = list(map(str.rstrip, fp)) # Считываем из другого файла записи
records.sort(key=lambda x: ips.index(x.split()[0])) # Сортируем записи по нахождению адреса в списке адресов
with open("sorted_records.txt", "w") as fp:
fp.write("\n".join(records)) # Записываем отсортированные записи