Pitón; argparse Cómo especificar la posición de los argumentos posicionales.

¿Cómo especifico la posición de un argumento posicional?

En mi ejemplo a continuación, los argumentos de SCR y SCV aparecen al final de los argumentos opcionales, quiero que aparezcan al principio.

#!/usr/bin/python import argparse ### Parse arguments ### parser = argparse.ArgumentParser() parser.add_argument("SCR",type=int) parser.add_argument("SCV",type=int) parser.add_argument("--itemid",nargs='?') parser.add_argument("--tkt",nargs='?') parser.add_argument("--rfc",nargs='?') parser.add_argument("--state",nargs='?') parser.add_argument("--vendor",nargs='?') parser.add_argument("--application",nargs='?') parser.add_argument("--submitter",nargs='?') parser.add_argument("--assigneddev",nargs='?') parser.add_argument("--manager",nargs='?') parser.add_argument("--maasteps",nargs='?') parser.add_argument("--reasonforfailure",nargs='?') parser.add_argument("--assignedpm",nargs='?') parser.add_argument("--release",nargs='?') parser.add_argument("--erelease",nargs='?') parser.add_argument("--testenvloaded",nargs='?') parser.add_argument("--datetestloaded",nargs='?') parser.add_argument("--dateint2loaded",nargs='?') parser.add_argument("--tqadeploytime",nargs='?') parser.add_argument("--prodenvloaded",nargs='?') parser.add_argument("--dateprodloaded",nargs='?') parser.add_argument("--proddeploytime",nargs='?') parser.add_argument("--proddeployer",nargs='?') args = parser.parse_args() > scratch.py -h usage: scratch.py [-h] [--itemid [ITEMID]] [--tkt [TKT]] [--rfc [RFC]] [--state [STATE]] [--vendor [VENDOR]] [--application [APPLICATION]] [--submitter [SUBMITTER]] [--assigneddev [ASSIGNEDDEV]] [--manager [MANAGER]] [--maasteps [MAASTEPS]] [--reasonforfailure [REASONFORFAILURE]] [--assignedpm [ASSIGNEDPM]] [--release [RELEASE]] [--erelease [ERELEASE]] [--testenvloaded [TESTENVLOADED]] [--datetestloaded [DATETESTLOADED]] [--dateint2loaded [DATEINT2LOADED]] [--tqadeploytime [TQADEPLOYTIME]] [--prodenvloaded [PRODENVLOADED]] [--dateprodloaded [DATEPRODLOADED]] [--proddeploytime [PRODDEPLOYTIME]] [--proddeployer [PRODDEPLOYER]] SCR SCV 

El formateador de usage predeterminado separa los argumentos posicionales de los opcionales y los muestra al final. En el caso de pantallas multilínea como esta, las posiciones se colocan en una línea separada. Eso es lo que estás viendo.

Cuando el análisis de posiciones puede venir primero.

Una forma obvia de evitar esto es proporcionar su propia cadena de uso, pero con esta cantidad de argumentos puedo entender que no quiero hacerlo.

https://stackoverflow.com/a/26986546/901925 (el pasado noviembre) tiene un parche HelpFormatter que deshabilita esta reordenación. Pero como está escrito, solo se aplica al uso de una sola línea. El uso multilínea se maneja más adelante en el mismo método.