tipos propias print otra llamar lista imprimir funciones funcion dentro python python-3.x arguments

propias - llamar funciones dentro de funciones python



Leyendo los argumentos de comando nombrados (2)

¿Puedo usar argparse para leer los argumentos de la línea de comando nombrados que no necesitan estar en un orden específico? Busqué en la documentation pero la mayor parte se centró en mostrar contenido basado en los argumentos proporcionados (como --h ).

En este momento, mi script lee argumentos ordenados, sin nombre:

myscript.py foo-val bar-val

utilizando sys.argv :

foo = sys.argv[1] bar = sys.argv[2]

Pero me gustaría cambiar la entrada para que sea agnóstico al orden al nombrar argumentos:

myscript.py --bar = bar-val --foo = foo-val


La respuesta es . Un rápido vistazo a la documentación argparse también habría respondido.

Aquí hay un ejemplo muy simple, argparse es capaz de manejar necesidades mucho más específicas.

import argparse parser = argparse.ArgumentParser() parser.add_argument(''--foo'', ''-f'', help="a random options", type= str) parser.add_argument(''--bar'', ''-b'', help="a more random option", type= int, default= 0) print(parser.format_help()) # usage: test_args_4.py [-h] [--foo FOO] [--bar BAR] # # optional arguments: # -h, --help show this help message and exit # --foo FOO, -f FOO a random options # --bar BAR, -b BAR a more random option args = parser.parse_args("--foo pouet".split()) print(args) # Namespace(bar=0, foo=''pouet'') print(args.foo) # pouet print(args.bar) # 0

Por supuesto, en un script real, no codificarás las opciones de la línea de comandos y llamarás a parser.parse_args() (sin argumento) en su lugar. Hará que argparse tome la lista sys.args como argumentos de la línea de comandos.

Podrás llamar a este script de esta manera:

test_args_4.py -h # prints the help message test_args_4.py -f pouet # foo="pouet", bar=0 (default value) test_args_4.py -b 42 # foo=None, bar=42 test_args_4.py -b 77 -f knock # foo="knock", bar=77

Descubrirás muchas otras características leyendo el documento;)


Puedes usar los argumentos opcionales de esta manera:

import argparse, sys parser=argparse.ArgumentParser() parser.add_argument(''--bar'', help=''Do the bar option'') parser.add_argument(''--foo'', help=''Foo the program'') args=parser.parse_args() print args print sys

Luego, si lo llama con ./prog --bar=bar-val --foo foo-val se imprime:

Namespace(bar=''bar-val'', foo=''foo-val'') [''Untitled 14.py'', ''--bar=bar-val'', ''--foo'', ''foo-val'']

O, si el usuario quiere ayuda, argparse también lo construye:

$ ./prog -h usage: Untitled 14.py [-h] [--bar BAR] [--foo FOO] optional arguments: -h, --help show this help message and exit --bar BAR Do the bar option --foo FOO Foo the program