Я пытаюсь прочитать файлы из своего ведра S3 и проанализировать их с помощью шаблона регулярного выражения. Тем не менее, я не смог вычислить файлы по строкам. Есть ли способ сделать это или по-другому, мне нужно приближаться к этому для синтаксического анализа?Разбор файлов в AWS S3 с boto3
pattern = '^(19|20)\d\d[-.](0[1-9]|1[012])[-.](0[1-9]|[12][0-9]|3[01])[ \t]+([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9][ \t]+(?:[0-9]{1,3}\.){3}[0-9]{1,3}[ \t]+(?:GET|POST|PUT)[ \t]+([^\s]+)[ \t]+[1-5][0-9][0-9][ \t]+(\d+)[ \t]+(\d+)[ \t]+"(?:[^"\\]|\\.)*"[ \t]+"(?:[^"\\]|\\.)*"[ \t]+"(?:[^"\\]|\\.)*"'
s3 = session.resource('s3')
bucket_name = s3.Bucket(bucket)
data = [obj for obj in list(bucket_name.objects.filter(Prefix=prefix)) if obj.key != prefix]
for obj in data:
key = obj.key
body = obj.get()['Body'].read()
print(key)
print(body)
for line in body:
print(line)
Так я могу увидеть нужный файл и в состоянии прочитать все тело файла (близко к лог IIS). Однако, когда я пытаюсь перебрать строки, я получаю числа. Таким образом, выход print(line)
является
35
101
119
147
etc.
Я понятия не имею, где эти цифры как. Это слова, персонажи, что-то еще?
Моя цель - применить мой шаблон, как только я смогу прочитать файл строки за строкой с помощью оператора регулярных выражений.
EDIT: Вот один из моих логов
2016-06-14 14:03:42 1.1.1.1 GET /origin/ScriptResource.axd?=5f9d5645 200 26222 0 "site.com/en-US/CategoryPage.aspx" "Mozilla/5.0 (Linux; Android 4.4.4; SM-G318HZ Build/KTU84P)" "ASP.NET_SessionId=emfyTVRJNqgijw=; __SessionCookie=bQMfQzEtcnfMSQ==; __CSARedirectTags=ABOcOxWK/O5Rw==; dtCookie=B52435A514751459148783108ADF35D5|VVMrZVN1aXRlK1BXU3wx"
Пожалуйста, проверьте мой ответ ниже. –