Patterns an Funktionen übergeben
Verfasst: Montag 1. Juni 2015, 13:37
Hi Leute,
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:
Mithilfe dieser Fuktion könnte ich zum Beispiel aus einer log Datei folgendes auslesen:
x = 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:
Jedoch kriege ich hier nicht das das erwünschte Ergebniss. Ich denke es liegt daran das man den 'r' prefix operator nicht an die Funktion übergeben kann da er einfach als String behandelt wird. In der Funktion selber weiß ich nicht wie ich den operator benutzen kann wenn kein String sondern eine variable folgt....
Würde mich super über eine schnelle Antwort freuen da ich die Funktion möglichst bald brauche :K
lG Jonny
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