Verfasst: Sonntag 21. Februar 2010, 17:14
@Ronnie: schon klar....Ronnie hat geschrieben:Sorry, ...
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
@Ronnie: schon klar....Ronnie hat geschrieben:Sorry, ...
Dann eben mit einem Array_of_Dictionaries:walha2006 hat geschrieben:... das Problem mit dem Loop ...geht einfach nicht mit dem hash/dictionary..
Code: Alles auswählen
>>> config = """LOOPSTART [TEST] COUNT [5]
DIAG [T] SEND[22,3F]EXPECT[] TIMEOUT [0] SOURCE[F1] TARGET [00]
DIAG [T] SEND[22,0B]EXPECT[] TIMEOUT [0] SOURCE[F1] TARGET [05]
DIAG [T] SEND[22,3F]EXPECT[] TIMEOUT [0] SOURCE[F1] TARGET [0D]
WAIT [5000]
LOOPEND [TEST]"""
>>> table = [dict([ (m[0], m[-1].split(',')) if re.match(r'[0-9A-F*]+,', m[-1]) else m for m in re.findall(r'(\w+)\s*\[(.*?)\]', l)]) for l in config.split("\n")]
aber Dem Inhalt von dem Datein ändert sich ,Besonders zwischen [ ] ,ändert sich ,wie kann ich die Werte markieren Z.B im COUNT[?]?Ronnie hat geschrieben:Dann eben mit einem Array_of_Dictionaries:walha2006 hat geschrieben:... das Problem mit dem Loop ...geht einfach nicht mit dem hash/dictionary..Code: Alles auswählen
>>> config = """LOOPSTART [TEST] COUNT [5] DIAG [T] SEND[22,3F]EXPECT[] TIMEOUT [0] SOURCE[F1] TARGET [00] DIAG [T] SEND[22,0B]EXPECT[] TIMEOUT [0] SOURCE[F1] TARGET [05] DIAG [T] SEND[22,3F]EXPECT[] TIMEOUT [0] SOURCE[F1] TARGET [0D] WAIT [5000] LOOPEND [TEST]""" >>> table = [dict([ (m[0], m[-1].split(',')) if re.match(r'[0-9A-F*]+,', m[-1]) else m for m in re.findall(r'(\w+)\s*\[(.*?)\]', l)]) for l in config.split("\n")]
walha2006 hat geschrieben:aber Dem Inhalt von dem Datein ändert sich ,Besonders zwischen [ ] ,ändert sich ,wie kann ich die Werte markieren Z.B im COUNT[?]?
Code: Alles auswählen
table[0]['COUNT']
Code: Alles auswählen
>>> config = """LOOPSTART [TEST] COUNT [5]
DIAG [T] SEND[22,3F]EXPECT[] TIMEOUT [0] SOURCE[F1] TARGET [00]
DIAG [T] SEND[22,0B]EXPECT[] TIMEOUT [0] SOURCE[F1] TARGET [05]
DIAG [T] SEND[22,3F]EXPECT[] TIMEOUT [0] SOURCE[F1] TARGET [0D]
WAIT [5000]
LOOPEND [TEST]"""
>>> table = [dict([ (m[0], m[-1].split(',')) if re.match(r'[0-9A-F*]+,', m[-1]) else m for m in re.findall(r'(\w+)\s*\[(.*?)\]', l)]) for l in config.split("\n")]
>>> class ComProbe:
def __init__(self, t):
self.name = t[0]['LOOPSTART']
self.cnt = t[0]['COUNT']
self.tests = t[1:-1]
def run(self):
for i in range(0, int(self.cnt)):
print("running " + self.name + " for " + str(i+1) + " time:")
for test in self.tests:
if 'DIAG' in test:
print("\tsending " + str(test['SEND']) + " from " + test['SOURCE'] + " to " + test['TARGET'] )
else:
print("\twaiting: "+ test['WAIT'])
>>> t = ComProbe(table)
>>> t.run()
Code: Alles auswählen
def leseDatei(datei):
d = {}
f = open(datei)
for zeile in f:
zeile = zeile.strip()
wort = zeile.strip()
if "LOOPSTART" in zeile:
key, d[key] = (s.strip() for s in zeile.split("\n"))
elif "key" in locals():
d[key] += "\n%s" % zeile.strip()
f.close()
return d
def __init__(self, t):
self.name = t[0]['LOOPSTART']
self.cnt = t[0]['COUNT']
self.tests = t[1:-1]
def run(self):
for i in range(0, int(self.cnt)):
print("running " + self.name + " for " + str(i+1) + " time:")
for test in self.tests:
if 'DIAG' in test:
print("\tsending " + str(test['SEND']) + " from " + test['SOURCE'] + " to " + test['TARGET'] )
else:
print("\twaiting: "+ test['WAIT'])