ich versuche momentan eine Funktion zu schreiben die mithilfe übergebener Patterns Infos aus log Datein ausließt.
Hier eine Methode die ich als Vorgabe nutze:
Code: Alles auswählen
import re
def simple_get_info(log_file_name, get_var_name):
result = ''
reg_line = []
try:
with open(log_file_name) as f:
lines = f.readlines()
except IOError as exception:
return exception
pattern = re.compile(get_var_name + r'\s+=?\s+([\d\.]+)')
pattern_name = re.compile(r'^' + get_var_name + r'\s+=?\s+')
for line in lines:
if pattern_name.match(line) is not None:
reg_line = pattern.findall(line)
if reg_line:
result = (reg_line[0])
return resultx = get_info_simple("test.log","Total time:")
test.log = Total Time: 3.500
print(x) würde dann 3.500 ausgeben.
Das ganze klappt aber zum Beispiel nicht wenn ich in der Log Datei das hier stehen habe: Total Time: ------ 3.500^
Deswegen will ich das gesuchte Pattern mit an die Funktion übergeben.
Bisher sieht mein Ergebniss so aus:
Code: Alles auswählen
def simple_get_info_test(log_file_name, get_var_name , get_pattern , get_result):
result = ''
reg_line = []
try:
with open(log_file_name) as f:
lines = f.readlines()
except IOError as exception:
return exception
pattern = re.compile(get_var_name + get_pattern +get_result)
pattern_name = re.compile(r'^' + get_var_name + get_pattern)
for line in lines:
if pattern_name.match(line) is not None:
reg_line = pattern.findall(line)
if reg_line:
result = (reg_line[0])
return result
x = simple_get_info_jonny("test.log","Total encoding time","r'\s+=?\s+'","r'([\d\.]+)'")
print(x)
Würde mich super über eine schnelle Antwort freuen da ich die Funktion möglichst bald brauche :K
lG Jonny
