Ho il seguente codice (utilizzando Python 2.7):subparser argparse opzionale (per --version)
# shared command line options, like --version or --verbose
parser_shared = argparse.ArgumentParser(add_help=False)
parser_shared.add_argument('--version', action='store_true')
# the main parser, inherits from `parser_shared`
parser = argparse.ArgumentParser(description='main', parents=[parser_shared])
# several subcommands, which can't inherit from the main parser, since
# it would expect subcommands ad infinitum
subparsers = parser.add_subparsers('db', parents=[parser_shared])
...
args = parser.parse_args()
Ora mi piacerebbe essere in grado di chiamare questo programma esempio con la --version
allegato al programma normale o qualche sottocomando:
$ prog --version
0.1
$ prog db --version
0.1
Fondamentalmente, devo dichiarare subparsers opzionali. Sono consapevole che questo non è really supported, ma ci sono soluzioni alternative o alternative?
Edit: Il messaggio di errore che sto ottenendo:
$ prog db --version
# works fine
$ prog --version
usage: ....
prog: error: too few arguments
Si noti che attendiamo questa funzione di base dal 2009. – yac
Ho iniziato a utilizzare docopt anziché il parser dell'argomento incorporato. Supporta l'uso misto con o senza "azioni", alias "verbi". http://docopt.org/ –