【发布时间】:2015-06-19 02:57:25
【问题描述】:
如何指定位置参数的位置?
在下面的示例中,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
【问题讨论】:
-
在传统的 UNIX 程序中,选项(argparse 称为“可选参数”)位于操作数(“位置参数”)之前。大多数现代程序会以任意顺序接受它们,但 argparse 仍然鼓励人们正确传递它们。你为什么要打败它?
-
可选参数总是在命令行界面中的位置参数之前。为什么你需要这个与众不同?
-
我只是认为它“读取”需要的参数首先而不是最后...
-
@MartijnPieters 总是? Git 让他们追上来。