#python
#python
Вопрос:
В настоящее время я пытаюсь разделить файл на список IP-адресов, как бы мне заставить его работать до конца файла, а затем остановиться, когда он достигнет конца. В настоящее время он считывает первые строки, разбивает их и останавливается.
with open('log1.txt') as logFile:
for line in logFile:
i = i 1
content_list = line.split("-")
#ipList[i] = content_list[1] # I want it to be split into this list
break
print(content_list[1])
Вот также пример того, как выглядит мой список
172.16.121.64 - - [03/Sep/2018:09:46:19] GET /index.html HTTP/1.1 200 437
172.16.121.64 - - [03/Sep/2018:09:46:23] GET /index.html HTTP/1.1 200 437
172.16.121.64 - - [03/Sep/2018:09:46:27] GET /index.html HTTP/1.1 200 437
172.16.121.35 - - [03/Sep/2018:09:46:28] GET /index.html HTTP/1.1 200 437
172.16.121.240 - - [03/Sep/2018:09:46:31] GET /index.html HTTP/1.1 200 437
Комментарии:
1. Почему этот оператор break? это причина, по которой вы не можете добраться до конца файла, поскольку он завершает цикл for
Ответ №1:
вы можете разделить строку пробелом и взять элемент с индексом 0. Вы можете делать все, что угодно, в понимании списка
with open('log1.txt') as logFile:
ips = [line.split()[0] for line in logFile]
print(ips)
Если вы планируете и дальше манипулировать IP-адресами, посмотрите на ipaddress из стандартной библиотеки.
Комментарии:
1. Мне просто нужно отсортировать их и найти наиболее часто встречающийся сейчас
2. Посмотрите на коллекции. Counter() и его метод most_comm() .