python - argumentparser - ¿Controlar el formato de la lista de argumentos de ayuda argparse?
python argparse argumentparser() (2)
No tengo Python 3, pero mirando OptionParser
(que es muy similar), me doy cuenta de que puedes cambiar:
parser.formatter.max_help_position = 50
Esto aumentará el espacio reservado para los indicadores de opción (de forma predeterminada, es 24)
import argparse
parser = argparse.ArgumentParser(prog=''tool'')
args = [(''-u'', ''--upf'', ''ref. upf'', dict(required=''True'')),
(''-s'', ''--skew'', ''ref. skew'', {}),
(''-m'', ''--model'', ''ref. model'', {})]
for args1, args2, desc, options in args:
parser.add_argument(args1, args2, help=desc, **options)
parser.print_help()
Salida:
usage: capcheck [-h] -u UPF [-s SKEW] [-m MODEL]
optional arguments:
-h, --help show this help message and exit
-u UPF, --upf UPF ref. upf
-s SKEW, --skew SKEW ref. skew
-m MODEL, --model MODEL
ref. model
¿Cómo imprimo ref. ¿Modelo en la misma línea que -m MODEL, --model MODEL
lugar de que aparezca en una línea separada cuando ejecuto el script con la opción -h
?
Podrías proporcionar el argumento formatter_class
:
parser = argparse.ArgumentParser(prog=''tool'',
formatter_class=lambda prog: argparse.HelpFormatter(prog,max_help_position=27))
args = [(''-u'', ''--upf'', ''ref. upf'', dict(required=''True'')),
(''-s'', ''--skew'', ''ref. skew'', {}),
(''-m'', ''--model'', ''ref. model'', {})]
for args1, args2, desc, options in args:
parser.add_argument(args1, args2, help=desc, **options)
parser.print_help()
Nota: la implementación de argparse.HelpFormatter
es privada solo que el nombre es público. Por lo tanto, el código podría dejar de funcionar en futuras versiones de argparse
. Presente una solicitud de función para proporcionar una interfaz pública para la personalización de max_help_position
en http://bugs.python.org/
Salida
usage: tool [-h] -u UPF [-s SKEW] [-m MODEL]
optional arguments:
-h, --help show this help message and exit
-u UPF, --upf UPF ref. upf
-s SKEW, --skew SKEW ref. skew
-m MODEL, --model MODEL ref. model