parser example argumentparser arg_parser add_argument python python-3.x argparse

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:

  1. 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 80

  2. Cuando --head se pasa sin ningún valor, me gustaría que --head a otro valor por defecto. En este caso, algo limitado, como 10

  3. Cuando --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.