有没有办法添加一个只能用作-p
或-p=value
但不能用作-p value
的参数
我想在脚本中添加一个可选的参数--parallel/-p
。以下是我希望用户通过的方式:
./script arg1 arg2 -p # this defaults to 10
./script arg1 arg2 -p=13 # This is fine and will set the value to 13
./script arg1 arg2 -p 13 # This is NOT fine and I want to ban this. Next line will tell why.
./script -p arg1 arg2 # I want -p to be usable regardless of its position.
# But here arg1 will be considered as an argument of -p option, which is unwanted.
不幸的是,这里有两个问题:
-
argparse
只允许长参数使用--option=value
,当名称超过一个字符时会生成长参数。 -
argparse
无法强制执行--option=value
语法,而--option value
始终是可能的。
您可能需要使用sys.args
内部的内容编写自己的解析器(如果您只有一个选项,则可以通过搜索以"-p"
开头的参数来快速完成。