[python] Tener opciones en argparse con un guion


Answers

Desafortunadamente, el reemplazo del guión al guión bajo no funciona para los argumentos de posición (sin el prefijo de -- ) 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 argumento 1'st para 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>])
Question

Quiero tener algunas opciones en el módulo argparse como --pm-export sin embargo, cuando trato de usarlo como args.pm-export , obtengo el error de que no hay atributo pm . ¿Cómo puedo evitar este problema? ¿Es posible tener - en opciones de línea de comando?






Links