Hier jetzt zum Problem, ich habe eine Funktion geschrieben die mir Zeilen ausliest und die Werte dann in eine Liste schreibt, soweit so gut. Funktioniert auch bis dato wunderbar. Allerdings komm ich nun dazu das ich mehrere Listen haben, die Funktion dazu allerdings immer diesselbe wäre, nur das der Listenname sich ändert. Optimal wäre quasi wenn ich den Listennamen als Parameter der funktion übergeben könnte und der das dann entsprechend irgendwie auch annimmt.
Hier mal der Quellcode, ist übrigens um eine Konfiguration für ein vmstat tool auszulesen gedacht (halt erstmal was simples), danach sollen die Listen in eine Datei geschrieben werden und von einem anderen Programm entsprechend benutzt werden
Code: Alles auswählen
#!/usr/bin/python3
import sys
import re
# Config
conf = "example.conf"
def ASG_VAL_INS(i):
j = 1
for x in range(len(newline)):
asg_cpu[i][j-1] = int(newline[j])
j = j+1
def ASG_SYS(name, pos):
if newline[0] == name:
asg_sys[pos] = 1
ASG_VAL_INS(pos+1)
else:
trigger = 0
def ASG_CPU(name, pos):
if newline[0] == name:
asg_cpu[pos] = 1
ASG_VAL_INS(pos+1)
else:
trigger = 0
# CPU act us v1 v2 sy v1 v2 id v1 v2 wa v1 v2 st v1 v2
asg_cpu = [ 0 , 0 , [ 0 , 0 ] , 0 , [ 0 , 0 ] , 0 , [ 0 , 0 ] , 0 , [ 0 , 0 ] , 0 , [ 0 , 0 ] ]
try:
obj = open(conf, "r")
except:
# ErrorLog
print("File", conf, "not found")
sys.exit(1)
trigger = 0
for line in obj:
newline = re.findall(r'\w+', line)
try:
# SYSTEM
if trigger == 5:
ASG_SYS("interrupts", 1)
ASG_SYS("changes", 3)
if newline[0] == "system":
asg_sys = 1
trigger = 5
# CPU
if trigger == 6:
ASG_CPU("timeuser", 1)
ASG_CPU("timekernel", 3)
ASG_CPU("idle", 5)
ASG_CPU("waiting", 7)
ASG_CPU("virtuel", 9)
if newline[0] == "cpu":
asg_cpu[0] = 1
trigger = 6
except:
continue
print("CPU:", asg_cpu)
obj.close()
Code: Alles auswählen
[cpu]
waiting=12,34
idle=47,11
etc...
bla
[system]
something here
and so on