¿Opciones con opciones con argparse de Python?

Estoy escribiendo un script en Python, y estoy usando argparse para analizar mis argumentos. El script debe comparar dos “alineadores” diferentes de un grupo de alineadores disponibles, y cada alineador tiene algunas opciones de configuración.

Quiero poder llamar mi script con algo como:

./script.py --aligner aligner1 --param 12 --aligner aligner2 --param 30 --other_param 28 

Quiero salir de este tipo de estructura donde la primera opción –param “pertenece” a la primera opción –aligner, y la segunda –param y las opciones –otros_param “pertenecen” al segundo –aligner opción.

¿Es capaz argparse de este tipo de análisis de opciones estructuradas?

Si es así, ¿cuál es la mejor manera de hacerlo? Si no, ¿hay otra biblioteca que debería mirar?

¿Hay un diseño de interfaz de usuario drásticamente mejor que podría estar usando en lugar de esto?

En general, creo que lo que quiere es imposible porque no puede asociar los valores de los parámetros opcionales. Es decir, no puedo ver cómo asociar --param 12 con --aligner aligner1 .

Sin embargo.

Puedes usar argparse siguiente manera:

 p = argparse.ArgumentParser () p.add_argument ("--aligner", action="append", nargs="+") 

Esto creará múltiples argumentos de alineador, cada uno de los cuales requerirá al menos un argumento (el nombre del alineador). Luego puede usar un esquema de encoding adicional (que puede documentar en el texto de ayuda para el analizador) que codifica los parámetros para cada alineador. Por ejemplo, puedes llamar a tu script con:

 ./script.py --aligner aligner1 param=12 --aligner aligner2 param=30 other_param=28 

Luego, divide los argumentos adicionales para cada alineador en una list , divide por '=' y luego creas un dict . Potencialmente actualizando con un conjunto predeterminado de argumentos.