optparse und OptionGroup
Verfasst: Mittwoch 21. Februar 2007, 15:48
Ich schreibe gerade ein kleines Kommandozeilen-Programm. Das Programm kennt globale Optionen und zusätzlich auch noch eine Gruppe exklusiver Optionen. Zum Parsen der Optionen habe ich das optparse Module verwendet. Das Problem war nun, dass die Klasse OptionParser bei der Ausgabe der Hilfe (--help) immer globale Optionen und exklusive Optionen durcheinandergewürfelt hat, was nicht zur Übersicht beitrug
Zuerst wollte ich OptionParser überschreiben, um das Verhalten zu ändern. Dafür habe ich mir dem Quelltext des optparse Moduls angeschaut. Dabei ergab sich aber eine viel einfachere Lösung. Statt alle Optionen direkt zur OptionParser Instanz hinzuzufügen, erstellt man einfach eine OptionGroup:
Schon funktioniert alles. Man kann so die Optionen schön nach ihrem Zweck aufteilen.
Die große Frage ist nur: Warum zur Hölle schweigt sich die Dokumentation über dieses Feature komplett aus? Da steht nicht das kleinste Wort darüber drinnen. Weiß jemand was darüber?
Zuerst wollte ich OptionParser überschreiben, um das Verhalten zu ändern. Dafür habe ich mir dem Quelltext des optparse Moduls angeschaut. Dabei ergab sich aber eine viel einfachere Lösung. Statt alle Optionen direkt zur OptionParser Instanz hinzuzufügen, erstellt man einfach eine OptionGroup:
Code: Alles auswählen
command_options = [
# exklusive Optionen ...
]
global_options = [
# globale Optionen ...
]
parser = OptionParser(usage=self.usage,
description=self.description,
version=__version__,
option_class=CommandOption,
option_list=global_options)
description = _('Commands to modify the phone book and to search '
'or print entries.\n'
'Only one of these options may be specified.')
group = parser.add_option_group(_('Commands'),
description=description)
group.add_options(command_options)
Die große Frage ist nur: Warum zur Hölle schweigt sich die Dokumentation über dieses Feature komplett aus? Da steht nicht das kleinste Wort darüber drinnen. Weiß jemand was darüber?