Seite 1 von 1

OptionParser -h Ausgabe verändern

Verfasst: Montag 23. Oktober 2006, 11:45
von Zap
Hallo zuammen. Ich habe mir mal meine erstes Kommandozeilenscript mit OptionParser zusammengestrickt.
Es funktioniert auch alles soweit sehr gut, aber hätte eine Frage zu der Help-Ausgabe.

Codeausschnitt:

Code: Alles auswählen

...
from optparse import OptionParser
...
parser.add_option("-m", "--memAddr", type="string", dest="memAddr",
                   help="memAddr as hexStr default=0x40000", default="0x40000")
parser.add_option("-e","--entryPoint", type="string", dest="entryPoint",
                   help="entryPoint as hexStr default=0x40040",default="0x40040" )
...

Beim skriptaufruf mit -h erhalte ich folgende usage-message:

Code: Alles auswählen

...
options:
  -h, --help            show this help message and exit
  -mMEMADDR, --memAddr=MEMADDR
                        memAddr as hexStr default=0x40000
  -eENTRYPOINT, --entryPoint=ENTRYPOINT
                        entryPoint as hexStr default=0x40040
...
Jetzt ist meine Frage: Gibt es eine Möglichtkeit die Variablennamen (MEMADDR und ENTRYPOINT ) auszublenden? Ich empfinde das als leichten Overhead und würde gerne nur die Optionskürzel -m --memAddr usw + meinem Helptext ausgeben.
Hab mich durch die doc-strings und python.org gewühlt aber leider nichts gefunden.

Re: OptionParser -h Ausgabe verändern

Verfasst: Montag 23. Oktober 2006, 11:59
von gerold
Zap hat geschrieben:Jetzt ist meine Frage: Gibt es eine Möglichtkeit die Variablennamen (MEMADDR und ENTRYPOINT ) auszublenden?
Hi Zap!

Mit dem Parameter ``metavar`` kannst du den Variablennamen beeinflussen. Mein Tipp: Mach ihn kürzer, aber weglassen würde ich ihn nicht.

``metavar="MEM"``
``metavar="ENTRY"``

mfg
Gerold
:-)

Verfasst: Montag 23. Oktober 2006, 12:03
von Y0Gi
Es gibt Optionen, um die Meta-Variable(?) selbst zu benennen; vielleicht tut da auch ein leerer String. Ansonsten ist hier wieder mal "explicit is better than implicit" zum Einsatz gekommen; ich bezweifle, dass jemand die Hilfe durch die zusätzlichen Variablennamen (die einem guten Beispiel nahekommen, das aber nie in --help vorkommt) schlechter versteht, eher im Gegenteil. Das bisschen Mehraufwand beim (einmaligen) Lesen ist gut investiert, denke ich.

Verfasst: Montag 23. Oktober 2006, 12:15
von Zap
Dank an euch zwei für die schnelle Antwort.
Das umbennen reicht schon aus...

@ gerold: Habe deinen Tipp entsprechend die VarNamen angepasst, damit die Formatierung nicht mehr ganz so aus allen Nähten platzt.

Verfasst: Dienstag 30. Januar 2007, 12:34
von EnTeQuAk
Ich hatte das Problem auch mal... ich wollte allerdings meine Konsolenausgabe nicht nur ein wenig formatieren sondern auch Farbe reinbringen. Ich habe dazu bei 'pocoo' in der 'console.py' etwas wunderschönes gefunden... dies habe ich versucht in die '-h' Ausgabe von 'optparse' einbauen.

Allein mit den gegebenen Sachen war es nicht so einfach.

Ich habe mir einfach mal den Quelltext von optparse angeschaut und die Klassen entdekt, die für die Ausgabe verantwortlich sind.

Es gibt u.A. die Klasse 'TitledHelpFormatter', wenn ich mich net irre. Und noch eine andere. Auf basis dieser habe ich mir meine eigene Klasse gebastelt und sie direkt mit eingebaut.

Code: Alles auswählen

parser = OptionParser(formatter=SelfDefinedFormatter())
Um dir Arbeit zu sparen, lasse deinen Formatter von der Klasse 'optparse.HelpFormatter' erben. genauso machen es die Beispiele auch.

ansonsten siehe Mein Beispiel

Ist mir nur gerade so mal eingefallen ;) also sollte es etwas mehr formatiert sein, als optparse es bringt... ist das ne gute Idee :)


MfG EnTeQuAk