Respuestas:
Como se indica en los argparse
documentos :
Para acciones de argumento opcionales, el valor de dest normalmente se infiere de las cadenas de opciones. ArgumentParser genera el valor de dest al tomar la primera cadena de opción larga y eliminar la
--
cadena inicial . Los-
caracteres internos se convertirán en_
caracteres para asegurarse de que la cadena sea un nombre de atributo válido
Entonces deberías estar usando args.pm_export
.
Desafortunadamente, el reemplazo de guión a guión bajo no funciona para argumentos de posición (sin prefijo --
) como
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs-dir',
help='Directory with .log and .log.gz files')
parser.add_argument('results-csv', type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs-dir='./', results-csv=<open file 'lool.csv', mode 'w' at 0x9020650>)
Por lo tanto, debe usar el primer argumento add_argument()
como nombre de atributo y metavar
kwarg para establecer cómo debería verse en la ayuda:
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs_dir', metavar='logs-dir',
nargs=1,
help='Directory with .log and .log.gz files')
parser.add_argument('results_csv', metavar='results-csv',
nargs=1,
type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs_dir=['./'], results_csv=[<open file 'lool.csv', mode 'w' at 0xb71385f8>])
positional_arg = getattr( parser, 'positional-arg' )
metavar
y no podía entender por qué no funcionaba. ¡Gracias!
Los guiones se convierten en guiones bajos:
import argparse
pa = argparse.ArgumentParser()
pa.add_argument('--foo-bar')
args = pa.parse_args(['--foo-bar', '24'])
print args # Namespace(foo_bar='24')
argparse
utilizasetattr
ygetattr
, por lo tanto, losdest
nombres no tienen que serdot
nombres de atributos válidos . El usuario también puede usargetattr
.