如何指定位置参数的位置?
在下面的例子中,SCR& SCV参数出现在可选参数的末尾,我希望它们出现在开头。
#!/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
答案 0 :(得分:3)
默认的usage
格式化程序将位置参数与选项分开,并在结尾处显示它们。在像这样的多行显示的情况下,位置被放在一个单独的行上。这就是你所看到的。
解析位置时可以先到。
一个显而易见的方法是提供你自己的用法字符串,但有了这么多的论据,我可以理解不想这样做。
https://stackoverflow.com/a/26986546/901925
(去年11月)有一个HelpFormatter
补丁,禁用此重新排序。但正如所写,它仅适用于单线使用。多行使用稍后将在同一方法中处理。