verboselevel in CLI definieren?

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 6. Februar 2007, 16:08

Hoi,

kann mir jemand einen Tipp (z. B. Link auf Code) geben, wie man verboselevel in Comman Line Interfaces "schön" implementiert? Bisher habe ich eine reichlich unschöne Lösung mit einer globalen Variable ...

Gruß,
Christian

PS Irgendwie gibt es z. Zt. wohl Probleme mit ActiveState - außerdem habe ich auch nichts Gescheites ergoogeln können.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 6. Februar 2007, 22:54

CM hat geschrieben:kann mir jemand einen Tipp (z. B. Link auf Code) geben, wie man verboselevel in Comman Line Interfaces "schön" implementiert?
Hi Christian!

Schau dir bei ``optparse`` doch mal die ``count``-Action an.

http://docs.python.org/lib/optparse-sta ... tions.html

Ich arbeite in meinen Programmen nicht direkt mit Verbose-Levels, sondern einfach nur mit der "globalen", (angedeutet) konstanten Variable ``DEBUG``. Ich habe kein Problem damit, diesen Sonderfall als globale Variable zu verwenden. Wozu gibt es denn ``global``, wenn nicht für solche Sonderfälle? :P

Im Kopfbereich setze ich ``DEBUG = False``. Beim Parsen der Kommandozeile wird, falls die Optionen ``-d``- oder ``--debug`` gesetzt sind, die Variable DEBUG auf True gesetzt. Normalerweise würde ich Variablen, die ich im Code ändere nicht GROSS schreiben, aber DEBUG ist da eine Ausnahme.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mittwoch 7. Februar 2007, 12:51

Hoi Gerold,
gerold hat geschrieben: Schau dir bei ``optparse`` doch mal die ``count``-Action an.
Arrgh! Manchmal kann ich so blind sein! Immer wieder kommt es vor, daß ich solche Dinge einfach nicht parat habe ...
gerold hat geschrieben: Wozu gibt es denn ``global``, wenn nicht für solche Sonderfälle? :P
Das sehe ich genau wie Du. Hier ist der Sinn und Zweck für globale Variablen erfüllt.

Allerdings gefällt mir eine Sache nicht: Ständige if-verbose-Abfragen in Funktionen blähen den Code doch sehr auf. Mir scheint aber, daß ich für ein gutes CLI nicht drum herumkomme.

Dankeschön,
Christian
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Mittwoch 7. Februar 2007, 13:28

Ich wuerde mir eine Funktion definieren:

Code: Alles auswählen

def print_output(text, verbose_level=0):
    if verbose_level<=VERBOSE_LEVEL:
        print text
wobei ich VERBOSE_LEVEL auch als globale Variable definieren wuerde. Dann musst du die if-Abfrage nur einmal machen...
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mittwoch 7. Februar 2007, 16:55

Hoi

na ja, im Grunde hast Du irgendwie recht. Andererseits ändert es auch nichts. Nach einigem hin und her, habe ich es aber doch so (zumindest so ähnlich) gemacht.

Danke
Christian
Antworten