Woher kriege ich eine Liste aus optparse.OptionPars options?

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
finki
User
Beiträge: 20
Registriert: Samstag 19. Februar 2011, 11:15

Hallo, guten Tag an alle (eher gute Nacht...). Ich bräuchte mal wieder eure Hilfe.

Ich nutze das optparse.OptionParser um die Options zu erhalten. Soweit so gut. Ich brauche allerdings auch eine Liste aller erzeugten Variablen. Zum Beispiel habe ich nach

Code: Alles auswählen

(options, unparsed_args) = options.parse_args(args)
ein "options.playback". Ich bräuchte aber eine iterable Liste aller keys. Wo kriege ich das her? Ich würde gerne so etwas machen wie:

Code: Alles auswählen

for key, value in options:
    config_new.set(section, key, value)
Danke schon mal für eure Antworten.
finki
User
Beiträge: 20
Registriert: Samstag 19. Februar 2011, 11:15

Danke schön für den Hinweis. Es funktioniert nun einwandrei. Habe es jetzt so gelöst:

Code: Alles auswählen

    for key in vars(options):
        value = getattr(options, key)
        if value is not None:
            config_new.set(section, key, value)
lunar

@finki: Nütze ".iteritems()":

Code: Alles auswählen

for key, value in vars(options).iteritems():
    if value is not None:
        config_new.set(section, key, value)
finki
User
Beiträge: 20
Registriert: Samstag 19. Februar 2011, 11:15

Das ist exakt was ich gesucht und gebraucht habe. Danke.

... aber nur so als Hinweis, in deinem Beispiel hast du .itervalues(), wohingegen du im Beschreibungstext .iteritems() schreibst. Ich glaube du meinst .iteritems(), da damit alles reibungslos funktioniert. Nur so für die Nachwelt, falls es jemand der gerade lernt ausprobiert.
lunar

@finki: Du verwirrst mich. In meinem Beispiel steht doch ".iteritems()"?! ".itervalues()" habe ich doch gar nicht erwähnt?
finki
User
Beiträge: 20
Registriert: Samstag 19. Februar 2011, 11:15

In deinem Python Beispiel stand .itervalues() und im Text .iteritems()!!

Was soll das, jetzt ist es wieder weg. Hat es jemand "Korrektur" editiert, bevor ich darauf geantwortet habe? Vielleicht während ich noch schrieb. Aber das ist ja jetzt sowieso egal.
BlackJack

@finki: *Hust* :oops: Das war ich, sorry für die Verwirrung. Und es war in der Tat bevor Deine Antwort da war. Sonst hätte ich es als Änderung gekennzeichnet.
lunar

@finki: Verzeihung, ich dachte wirklich, ich hätte ".iteritems()" geschrieben. Es passiert mir leider öfter (auch bei der eigenen Arbeit), dass ich .itervalues() schreibe, obwohl ich .iteritems() meine. Ich hoffe, die Verwirrung war nicht zu groß, bitte entschuldige meine Nachlässigkeit.

@BlackJack: Danke für die Korrektur meines Beitrags. Du moderierst ja schneller als ich denken kann ;)
finki
User
Beiträge: 20
Registriert: Samstag 19. Februar 2011, 11:15

@lunar
Ist ja alles halb so wild.^^ Wie bereits erwähnt, kam ich nach kurzer Zeit dahinter. Es konnte ja nur einer von beiden richtig sein. :P Danke für die Hilfe.

@BlackJack
Ich finde es auch löblich, das du hier alles schön sauber hälst und "offentsichtliche" Fehler spurenfrei korrigierst.

Derartige kleine Fehler können passieren. Wir machen alle Fehler.
Antworten