Parametervariation von Variablen aus config-Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bastel-wastel
User
Beiträge: 28
Registriert: Samstag 20. Februar 2010, 15:14

Hallo miteinander,

ich habe folgendes Projekt:

Ich schreibe ein Skript, das Berechnungen durchführt. Hierzu werden verschiedene Variablen definiert.

Über configParser lese ich eine config- Datei aus, in der Variablen und deren Wert stehen:

Code: Alles auswählen

#config file:
[variables]
a = 10
b = 20
c = p1

[parameter]
p1min = 1
p1max = 3

Pyhton-Skript

Code: Alles auswählen

#Gewünschte Rechnung:
#x = a + b + c

for i in range(p1max-p1min)
x(i) = 10 + 20 + 1
x(i) = 10 + 20 + 2
x(i) = 10 + 20 + 3
Das Auslesen der Variablen aus dem config file funktioniert einwandfrei.

Meine Frage ist jetzt: Wie kann ich es handlen, wenn für eine Variable keine Zahl, sondern ein Parameter steht. Wie kann die for Schleife dementsprechend anpassen?

Ich muss noch dazu sagen, dass in meinem Projekt ca. 20 Variablen im config file stehen, wobei ich maximal drei Parameter (p1, p2, p3) gleichzeitig variieren möchte. Jede Variable kann statt einer Zahl einen Parameter p bekommen. (Jeder Parameter wird aber maximal einmal vorkommen).

Hat jemand einen Denkanstoß für mich?

Gruß bastel
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Als Anregung:

Code: Alles auswählen

c = 'p1'
parameter_dict = {'p1min': p1min, 'p1max': p1max}
for i in xrange(parameter_dict[c + 'min'], parameter_dict[c + 'max']):
MfG
HWK
bastel-wastel
User
Beiträge: 28
Registriert: Samstag 20. Februar 2010, 15:14

Danke für die Antwort,

die Variation passt schon so. Allerdings habe ich jetzt das nachfolgende Problem:

Wenn der Parameter p1, jetzt nicht der Variable c sondern der Variable b zugewiesen wird, muss ich die for Schleife ja automatisch anpassen lassen.

Zuerst muss ich herausfinden, welcher Variablen der Parameter p1 zugewiesen wird. Das bekomme ich hin.

Code: Alles auswählen

c = 'p1'
parameter_dict = {'p1min': p1min, 'p1max': p1max}
for i in xrange(parameter_dict[c + 'min'], parameter_dict[c + 'max']):
    print c
    print a
    print b

Wie kann ich denn hier dafür sorgen, dass für "c" (oder für "a" oder "b)) automatisch "i" genommen wird. Natürlich kann ich in der Schleife für jede Variable eine if- Anweisung schreiben, finde das aber sehr umständlich.
Am liebsten würde ich "c" vor der Schleife die Adresse von i zuweisen, aber Pointer gibt es bei Python nicht.

Gruß bastel


EDIT: Habe es hinbekommen.
Ich habe alle Variablen in einem dictionary und alle Dateinamen in einer Liste gespeichert. In der for Schleife werden im dictionary die Werte durch die berechneten Parameter ersetzt.
Antworten