我想使用没有-或--的可选参数,
想要实现这样的目标:
scriptname install <other options>
scriptname uninstall <other options>我的代码:
parser = argparse.ArgumentParser()
parser.add_argument("install","INSTALL",action='store_true',help="INSTALL SOMETHING",default="")
parser.add_argument("uninstall","UNINSTALL",action='store_true',help="UNINSTALL SOMETHING",default="")
args = parser.parse_args()
if args.install:
install logic
if args.uninstall:
uninstall logic得到下面的错误
ValueError: invalid option string 'install': must start with a character '-'发布于 2019-07-15 05:50:17
“store_true”操作不带任何参数(nargs=0)。那个动作的位置总是正确的。并且它将拒绝命令行字符串,比如“install”,作为无法识别的字符串。
破折号是optional定义的一部分。它标识用作标志或名称的字符串,而不是值。如果没有它,您将定义一个positional,这是一个由位置而不是标志字符串标识的参数。
因此,通常的optionals定义是:
parser.add_argument("--install",action='store_true',help="INSTALL SOMETHING")
parser.add_argument("--uninstall",action='store_true',help="UNINSTALL SOMETHING") 你可以把它们放在一个相互排斥的小组里。对于store_true,缺省值是False,如果提供了标志,没有任何参数,则属性设置为True。
store_true是允许与位置,但没有意义。需要一个位置,所以不能获得False值。
您可以定义带有选项的位置:
parser.add_argument('foo', choices=['install', 'uninstall'], help='...')然后args.foo将有这两个字符串值中的一个。
建议使用subparsers是这个位置选择的一个变体-- action类型是一个特殊的类型,它触发一个新的解析器。
发布于 2019-07-15 06:00:44
如何使用"sys“模块而不是”sys解析“呢?那么答案将是
import sys
if sys.argv[1] == "install":
install logic
elif sys.argv[2] == "uninstall":
uninstall logic
else:
exithttps://stackoverflow.com/questions/57012262
复制相似问题