Seite 1 von 1

verboselevel in CLI definieren?

Verfasst: Dienstag 6. Februar 2007, 16:08
von CM
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.

Re: verboselevel in CLI definieren?

Verfasst: Dienstag 6. Februar 2007, 22:54
von gerold
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
:-)

Re: verboselevel in CLI definieren?

Verfasst: Mittwoch 7. Februar 2007, 12:51
von CM
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

Verfasst: Mittwoch 7. Februar 2007, 13:28
von Rebecca
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...

Verfasst: Mittwoch 7. Februar 2007, 16:55
von CM
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