首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用不带-或-(破折号)的可选论证网

如何使用不带-或-(破折号)的可选论证网
EN

Stack Overflow用户
提问于 2019-07-12 18:22:07
回答 2查看 367关注 0票数 0

我想使用没有---的可选参数,

想要实现这样的目标:

代码语言:javascript
复制
scriptname install <other options>
scriptname uninstall <other options>

我的代码:

代码语言:javascript
复制
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

得到下面的错误

代码语言:javascript
复制
ValueError: invalid option string 'install': must start with a character '-'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-15 05:50:17

“store_true”操作不带任何参数(nargs=0)。那个动作的位置总是正确的。并且它将拒绝命令行字符串,比如“install”,作为无法识别的字符串。

破折号是optional定义的一部分。它标识用作标志或名称的字符串,而不是值。如果没有它,您将定义一个positional,这是一个由位置而不是标志字符串标识的参数。

因此,通常的optionals定义是:

代码语言:javascript
复制
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值。

您可以定义带有选项的位置:

代码语言:javascript
复制
parser.add_argument('foo', choices=['install', 'uninstall'], help='...')

然后args.foo将有这两个字符串值中的一个。

建议使用subparsers是这个位置选择的一个变体-- action类型是一个特殊的类型,它触发一个新的解析器。

票数 0
EN

Stack Overflow用户

发布于 2019-07-15 06:00:44

如何使用"sys“模块而不是”sys解析“呢?那么答案将是

代码语言:javascript
复制
import sys
if sys.argv[1] == "install":
    install logic
elif sys.argv[2] == "uninstall":
    uninstall logic
else:
    exit
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57012262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档