Seite 1 von 1

Kein Output

Verfasst: Mittwoch 27. August 2008, 12:15
von DaSch
Wie realisiere ich am besten ein verbose/quiet switch für ein Kommandozeile programm, ich dachte am besten wäre den sys.stdout einfach ins leere laufen zu lassen. Doch ich komm irgendwie nicht dahin das stdout in ein file zu speichern dass niemand sieht und sehen wird

Edit: Außerdem würde ich auch gerne noch die möglichkeit haben etwas in ein log zu schreiben und es auf dem Bildschirm auszugeben

Also quasi so dass ich 3 optionen habe quiet,verbose,log

wenn ich quiet mache dann gibts gar kein output
wenn ich log mache dann nur ins log
wenn ich verbose und log mache dann halt beides

Verfasst: Mittwoch 27. August 2008, 12:24
von CM
Ich würde an Deiner Stelle vom [mod]logging[/mod]-Modul Gebraucht machen. Das dürfte am einfachsten sein.

Gruß,
Christian

Verfasst: Mittwoch 27. August 2008, 13:43
von DaSch
Also vom Prinzip her klappt das jetzt ganz schön, ich krieg aber nach jeder Zeile den Fehler AttributeError: 'str' object has no attribute 'format'

Das Problem liegt aber in der Library, weil das da fromatiert wird, aber ich versteh nicht wieso ich den Fehler rauskriege, im beispiel wird auch einfach ein String übergeben, das Beispiel müsste also dann auch diesen Fehler ausliefern

Verfasst: Mittwoch 27. August 2008, 13:46
von CrackPod
Hallo,

wenn du gar nichts ausgeben möchtest kannst du(vorrausgesetzt du benutzt irgendein Linux/Unix-Derivat) stdout nach /dev/null umleiten.

LG

Verfasst: Mittwoch 27. August 2008, 14:12
von Rebecca
DaSch: Quellcode + Traceback bitte.

Verfasst: Mittwoch 27. August 2008, 15:03
von Y0Gi
Kommandozeilenschalter wie `-v` und `-q` kannst du mit dem `optparse`-Modul (siehe Beispiele) realisieren.

Verfasst: Mittwoch 27. August 2008, 17:25
von BlackJack
@CrackPod: Wenn man sich den Namen für das "Null-Gerät" aus `os.devnull` holt, funktioniert das auch plattformübergreifend. DOS/Windows kennt so etwas nämlich auch. Da heisst die Datei 'nul' und es ist egal in welchem Verzeichnis man sie öffnet! Was zur Folge hat, dass man *nirgends* eine echte Datei mit diesem Namen anlegen kann.