Необходимо сохранить статистику из 'test.log' в Postgres
День вечер! Если коротко о тз то необходимо :
- распаковать(запомнить имя архива), 2. парсить(получить строки). 3 создать таблицу в POSTRGESQL, где: 1) - колонка testid - имя архива (без tar.gz) 2) - далее названия колонок в файле 'columns.csv' (121 имя ) 4. Записать распарсенные данные в таблицу.
Ссылка на архив и таблицу https://drive.google.com/drive/folders/1t0tIVOMI36i6kl0ByPr4gxddUEC0h9lQ
/Пример строки/ -
3;fio-3.27-12-gd7a2;oltp_read_uniform;0;0;66362840;553019;69127;120001;3;662;7.105567;0.883065;17;23249;107.165068;60.988828;1.000000%=62;5.000000%=86;10.000000%=89;20.000000%=92;30.000000%=95;40.000000%=97;50.000000%=99;60.000000%=101;70.000000%=104;80.000000%=109;90.000000%=119;95.000000%=164;99.000000%=197;99.500000%=242;99.900000%=954;99.950000%=970;99.990000%=1613;0%=0;0%=0;0%=0;50;23256;114.506388;60.999852;489672;621288;100.000000%;553040.327731;1646.634228;0;0;0;0;0;0;0.000000;0.000000;0;0;0.000000;0.000000;1.000000%=0;5.000000%=0;10.000000%=0;20.000000%=0;30.000000%=0;40.000000%=0;50.000000%=0;60.000000%=0;70.000000%=0;80.000000%=0;90.000000%=0;95.000000%=0;99.000000%=0;99.500000%=0;99.900000%=0;99.950000%=0;99.990000%=0;0%=0;0%=0;0%=0;0;0;0.000000;0.000000;0;0;0.000000%;0.000000;0.000000;2.976875%;9.288333%;8295390;0;381;100.0%;0.0%;0.0%;0.0%;0.0%;0.0%;0.0%;0.00%;0.00%;0.00%;0.01%;0.01%;50.52%;49.00%;0.24%;0.01%;0.19%;0.03%;0.01%;0.01%;0.01%;0.01%;0.00%;0.00%;0.00%;0.00%;0.00%;0.00%;0.00%
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
Принципиально сделать можно таким образом:
lst=[]
with open('test.log', 'r') as f:
while "Starting" not in f.readline():
pass
while True :
s = f.readline()
print(s)
if "{" in s:
break
else:
lst.append(s.strip())
res = [x.split(';') for x in lst]
теперь в resу вас список списков с нужными строками, разбитыми по ';'.
Автор решения: A_Vaclav
→ Ссылка
пока два шага
#######################
# STEP 1
#######################
import tarfile
name_tar = "fio-example (3).tar.gz"
tar = tarfile.open(name_tar)
tar.extractall()
tar.close()
#распакует весь архив, то есть путь будет ..\fio-example\test.log
##############################
# STEP 2
##############################
import re
import json
import os
dir_t = os.path.dirname(__file__)
filename = os.path.join(dir_t, 'fio-example', 'test.log')
def reader(filename):
regexp = r'{(?s:.*)}'
with open(filename) as f:
log = f.read()
json_value = re.findall(regexp, log)
log_dict = json.loads(json_value[0])
print(log_dict["fio version"])#проверочный
if __name__ == '__main__':
reader(filename)