Supongamos el siguiente ejemplo para extender suyo por completo:
#!/usr/bin/env python3
import argparse
...
def main():
parser = argparse.ArgumentParser()
parser.add_argument('input', nargs='?' action='store')
parser.add_argument('-l', '--length', type=int, action='store')
parser.add_argument('-v', '--verbose', action='store_true')
args = parser.parse_args()
if (args.input == None and args.length == None):
parser.print_help()
else:
print(args)
if __name__ == '__main__':
main()
Su objeto Namespace, mencionada por @Ben , en este ejemplo es args
. De las cadenas en parser.add_argument
se crea una variable.Puede acceder a él a través del args.input
o args.length
o args.verbose
. Esto se puede comprobar mediante la ejecución de print(args)
que en realidad va a mostrar algo como esto:
Namespace(input=None, length=None, verbose=False)
desde verbosa se establece en True
, si está presente y la entrada y la longitud son sólo variables, que no tienen que ser instanciado (sin argumentos previsto).
También puede ser útil group = parser.add_mutually_exclusive_group()
si desea asegurarse de que no se pueden proporcionar dos atributos simultáneamente.
Para mayor referencia, consulte:
try de uso, excepto para capturar TypeError, por lo que saben que nada se ha pasado – avasal
@avasal, 'len (args)' siempre arroja una TypeError. – huon