Я новичок, пытающийся использовать Python для анализа файлов журналов моей компании.У них другой формат, поэтому онлайн-анализаторы журналов плохо с ними работают.
Формат выглядит следующим образом:
localtime time-taken x-cs-dns c-ip sc-status s-action sc-bytes
cs-bytes cs-method cs-uri-scheme cs-host cs-uri-port cs-uri-path
cs-uri-query cs-username cs-auth-group s-hierarchy s-supplier-name
rs(Content-Type) cs(Referer) cs(User-Agent) sc-filter-result
cs-categories x-virus-id s-ip
Пример:
"[27/Feb/2012:06:00:01 +0900]" 65 10.184.17.23 10.184.17.23 200
TCP_NC_MISS 99964 255 GET http://thumbnail.image.example.com 80
/mall/shop/cabinets/duelmaster/image01.jpg - - -
DIRECT thumbnail.image.example.com image/jpeg - "Wget/1.12
(linux-gnu)" OBSERVED "RC_White_list;KC_White_list;Shopping" -
10.0.201.17
Главное, что я хочу сейчас сделать, - это захватить все cs-host иПоля cs-uri-path, объединить их вместе (чтобы получить http://thumbnail.image.example.com/mall/shop/cabinets/duelmaster/image01.jpg
в приведенном выше примере), подсчитать уникальные экземпляры, ранжировать и выплюнуть их в соответствии с количеством обращений, чтобы увидеть верхние URL.Есть ли способ заставить Python обрабатывать пробелы как отдельные объекты / столбцы и захватывать, например, 11-й объект?
Еще одним осложнением является то, что наши ежедневные файлы журнала ОГРОМНЫ (~ 15 ГБ), и в идеале я хочу, чтобы это занялодо 20 минут, если это возможно.
Код Никласа Б. работает хорошо, и я могу печатать лучшие IP-адреса, пользователей и т. д.
К сожалению, я не могу заставить программу печатать или писатьэто для внешнего файла или электронной почты.В настоящее время мой код выглядит следующим образом, и в файл записывается только последняя строка.В чем может быть проблема?
для ip, число в heapq.nlargest (k, sourceip.iteritems (), key = itemgetter (1)): top = "% d% s"% (count, ip) v = open (" C: / Пользователи / Гость / Рабочий стол / Анализ журнала / urls.txt "," w ")
print >> v, top