Articles of argparse

Usa argparse para ejecutar 1 de 2 funciones en mi script

Actualmente tengo 2 funciones en mi script .py. # 1 se conecta a la base de datos y hace algún procesamiento. # 2 hace algún otro procesamiento en archivos Actualmente, antes de ejecutar la secuencia de comandos, debo comentar / desagrupar manualmente la función que deseo ejecutar en mi bloque de instrucciones principal if. ¿Cómo […]

¿Cómo pasar el argumento argparse para funcionar como kwargs?

Tengo una clase definida de la siguiente manera class M(object): def __init__(self, **kwargs): …do_something y tengo el resultado de argparse.parse_args() , por ejemplo: > args = parse_args() > print args Namespace(value=5, message=’test’, message_type=’email’, extra=”blah”, param=”whatever”) Quiero pasar los valores de este espacio de nombres (excepto message_type ) para crear una instancia de la clase M […]

argparse: aplanar el resultado de action = ‘append’

Me gustaría hacer un script que soporte una lista de argumentos del formulario ./myscript –env ONE=1,TWO=2 –env THREE=3 Aquí está mi bash: import argparse parser = argparse.ArgumentParser() parser.add_argument( ‘–env’, type=lambda s: s.split(‘,’), action=’append’, ) options = parser.parse_args() print options.env $ ./myscript –env ONE=1,TWO=2 –env THREE=3 [[‘ONE=1’, ‘TWO=2’], [‘THREE=3’]] Claro que puedo arreglar esto en el […]

Generación (semi) automática de argparsers para funciones.

tldnr: dada una función, ¿hay una manera de crear automáticamente un ArgumentParser a partir de su firma? Tengo un montón de funciones que me gustaría exponer a la línea de comandos. Así que básicamente, un módulo: def copy(foo, bar, baz): … def move(from, to): … def unlink(parrot, nomore=True): … if __name__ == ‘__main__’: argparse stuff […]

Captura la excepción ArgumentTypeError de una acción personalizada

¿Cuál es la mejor práctica para lanzar una excepción ArgumentTypeError desde mi propia acción personalizada y dejar que el argparse la detecte por mí? Parece que el bloque try / except de argparse no maneja esta excepción para mis acciones personalizadas. Aunque lo hace muy bien por sus acciones integradas. class unique_server_endpoints(argparse.Action): “””This class avoids […]

Python argparse: argumento de línea de comando que puede ser nombrado o posicional

Estoy tratando de hacer un progtwig Python que use el módulo argparse para analizar las opciones de la línea de comandos. Quiero hacer un argumento opcional que puede ser nombrado o posicional. Por ejemplo, quiero que myScript –username=batman haga lo mismo que myScript batman . También quiero que myScript sin nombre de usuario sea válido. […]

Argumentos posicionales y subcomandos de Python argparse

Estoy trabajando con argparse y estoy tratando de mezclar subcomandos y argumentos posicionales, y surgió el siguiente problema. Este código funciona bien: import argparse parser = argparse.ArgumentParser() subparsers = parser.add_subparsers() parser.add_argument(‘positional’) subparsers.add_parser(‘subpositional’) parser.parse_args(‘subpositional positional’.split()) El código anterior analiza los argumentos en el Namespace(positional=’positional’) , sin embargo, cuando cambio el argumento posicional para que tenga nargs […]

¿Por qué este código argparse se comporta de manera diferente entre Python 2 y 3?

El siguiente código, usando subparsers de argparse, falla en Python 3 pero se ejecuta como se esperaba en Python 2. Después de comparar los documentos, todavía no puedo decir por qué. #!/usr/bin/env python from __future__ import print_function from argparse import ArgumentParser def action(args): print(args) if __name__ == ‘__main__’: std = ArgumentParser(add_help=False) std.add_argument(‘standard’) ap = ArgumentParser() […]

¿Cómo localizar el módulo argparse de Python, sin parchearlo?

Una aplicación de línea de comandos localizada parece extraña cuando alguna parte de los mensajes está en el idioma del usuario y otras partes, en inglés. No sé si desordené algo cuando instalé Python 3 desde la fuente, parece que no hay archivos *.mo , por lo que argparse (entre todos) no tiene en cuenta […]

argparse: configurando argumento opcional con valor de argumento obligatorio

Con el argparse de Python, me gustaría agregar un argumento opcional que, de no ser así, obtenga el valor de otro argumento (obligatorio). parser.add_argument(‘filename’, metavar = ‘FILE’, type = str, help = ‘input file’ ) parser.add_argument(‘–extra-file’, ‘-f’, metavar = ‘ANOTHER_FILE’, type = str, default = , help = ‘complementary file (default: FILE)’ ) Por supuesto, […]