Respuestas:
Como se indica en los argparsedocumentos :
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 metavarkwarg 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' )
metavary 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')
argparseutilizasetattrygetattr, por lo tanto, losdestnombres no tienen que serdotnombres de atributos válidos . El usuario también puede usargetattr.