acabo de notar un comportamiento en el que argparse desconcertado mí (supongo que nunca lo había usado para obtener una lista de los archivos muda antes):¿Por qué argparse me da una lista en una lista?
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('multi', action='append', nargs='+')
print(parser.parse_args())
Esto me da la salida:
~$ ./testargs.py foo bar baz
Namespace(multi=[['foo', 'bar', 'baz']])
~$
I esperado multi
para ser ['foo', 'bar', 'baz']
, no es una lista dentro de una lista. Tal como está, tendré que tomar args.multi[0]
antes del procesamiento, que no es gran cosa, pero se siente como una verruga fea, y me gustaría entender por qué está ahí.
¿Estoy haciendo algo tonto en add_argument
, o es solo un capricho inevitable?
Huh, tienes razón. Tengo una impresión equivocada de los documentos. Tal vez debería ver si puedo enviar un parche con una mejor redacción en algunas cosas. :) ¡Gracias! –
Sin embargo, tenga en cuenta que sin 'action = 'append'', los valores anteriores se descartarán si la opción se especifica varias veces. p.ej. 'argv = ['- foo', 'a', 'b', '--foo', 'c']' dará 'Namespace (foo = ['c'])' para 'add_argument ('- foo ', nargs =' + ') '. –