python - example - ¿Cómo hacer un valor opcional para el argumento usando argparse?
arguments parser python (1)
Después de leer un poco más en la documentación encontré lo que necesitaba: nargs=''?''
. Esto se usa con la acción de la store
, y hace exactamente lo que quiero.
Aquí hay un ejemplo:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument(''--head'',
dest=''size'',
const=10,
default=80,
action=''store'',
nargs=''?'',
type=int,
help=''Only print the head of the output'')
>>> parser.parse_args(''''.split())
... Namespace(size=80)
>>> parser.parse_args(''--head''.split())
... Namespace(size=10)
>>> parser.parse_args(''--head 15''.split())
... Namespace(size=15)
Fuente: http://docs.python.org/3/library/argparse.html#nargs
Estoy creando un script de python en el que quiero tener un argumento que manipule cuántos resultados de búsqueda obtienes como salida. Actualmente he nombrado la discusión --head
. Esta es la funcionalidad que me gustaría que tuviera:
Cuando
--head
no se pasa en la línea de comando me gustaría que sea un valor predeterminado. En este caso, uno bastante grande, como 80Cuando
--head
se pasa sin ningún valor, me gustaría que--head
a otro valor por defecto. En este caso, algo limitado, como 10Cuando
--head
se pasa con un valor, me gustaría almacenar el valor que se pasó.
Aquí hay un código que describe el problema:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument(''-h'',
''--head'',
dest=''size'',
const=80,
default=10,
action="I don''t know",
help=''Only print the head of the output'')
>>> # OFC, that last line will fail because the action is uknown,
... # but here is how I''d like it to work
... parser.parse_args(''''.split())
Namespace(size=80)
>>> parser.parse_args(''--head''.split())
Namespace(size=10)
>>> parser.parse_args(''--head 15''.split())
Namespace(size=15)
Sé que probablemente pueda escribir una acción personalizada para esto, pero primero quiero ver si hay algún comportamiento predeterminado que haga esto.