import os
import re
from collections import Counter
fileNames = []
textInfo = []
currentDirectoryPath = os.getcwd()
print(currentDirectoryPath)
regexp = re.compile(
r'(?P<clientIP>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).+\['
+ '(?P<timestamp>\d{2}/[A-Z][a-z]{2}/\d\d\d\d).+\"'
+ '(?P<action>[A-Z]{3,4}).+\"'
+ '(?P<statuscode>[1-5][0-9][0-9])'
)
#(?P<clientIP>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).+\[(?P<timestamp>\d{2}/[A-Z][a-z]{2}/\d\d\d\d).+\"(?P<action>[A-Z]{3,4}).+\" (?P<statuscode>[1-5][0-9][0-9])
os.chdir("/content/drive/log")
currentDirectoryPath = os.getcwd()
listOfFileNames = os.listdir(currentDirectoryPath)
#for files in listOfFileNames :
#print(files)
f = open('access_1.log', 'r')
matched = 0
failed = 0
cnt_clientIPs = Counter()
for line in f:
m = re.match(regexp, line)
if m:
cnt_clientIPs.update([m.group('clientIP')])
matched += 1
else:
failed += 1
print("""
client.........: %s
timestamp......: %s
actions........: %s
statuscode.....: %s
""" %
(m.group('clientIP'),
m.group("timestamp"),
m.group("action"),
m.group("statuscode"),
))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-bc8f84e43987> in <module>()
46 statuscode.....: %s
47 """ %
---> 48 (m.group('clientIP'),
49 m.group("timestamp"),
50 m.group("action"),
AttributeError: 'NoneType' object has no attribute 'group'
Я не получаю ошибку атрибута в последнем операторе печати. Мое регулярное выражение может работать, но когда я не могу напечатать его. Я смог распечатать его, если вынул код состояния из регулярного выражения. Я не знаю, почему я получаю ошибку без атрибута, когда для него есть атрибуты. Вот строка тестового кода, чтобы помочь вам запустить его. Я должен был взять его из файла, но я не могу загрузить файл здесь. '109.169.248.247 - - [12 / Dec / 2015: 18: 25: 11 +0100] "GET / administrator / HTTP / 1.1" 200 4263 "-" "Mozilla / 5.0 (Windows NT 6.0; rv: 34.0) Gecko / 20100101 Firefox / 34.0 "" - "