argparse模块如何……
通知
清除所有

argparse模块如何添加没有任何参数的选项?

RSS

(@ganesh)
贵族成员
加入:1年前
帖子:1362
18/05/2021 27点

我已经创建了一个使用argparse.该脚本采用一个配置文件名作为选项,并允许用户指定是要完全执行该脚本,还是只是刺激它。

要传递的参数:./script -f config_file -s或。/script -f config_file. sh

它工作得很好- f config_file部分,但是它一直问我-s的参数,这是可选的,不应该后面跟着任何。

我尝试了这个代码:

解析器= argparse.ArgumentParser ()

解析器。add_argument(“- f”,“——文件”)

#解析器。Add_argument ('-s', '——模拟',nargs = '0')

args = parser.parse_args ()

如果args.file:

config_file = args.file

如果args.set_in_prod:

模拟= True

其他:

通过

但是上面的代码给了我以下错误:

文件"/usr/local/lib/python2.6/dist-packages/argparse.py",第2169行,在_get_nargs_pattern .py

Nargs_pattern = '(-*%s-*)' % '-*'。加入(A *娜戈)

不能将序列与非int类型的str相乘

同样的错误' '而不是0。


报价
(@anamika)
贵族成员
加入:1年前
帖子:1381
18/05/2021 28点啊

“行动”关键字决定如何处理命令行参数。

Python中有各种各样的操作,其中一些是:

1.“存储”:它存储参数的值。

2.“store_const”:它存储由关键字const参数指定的值。

3.“store_true”和“store_false”:这些分别用于存储值“True”和“False”。这些都是' store_const '的特殊情况。

为了解决你的问题,你必须使用' store_true '操作:

从argparse导入ArgumentParser . >>>

>>> parser = ArgumentParser()

>>> _ =解析器。add_argument(“- f”,“——文件”,action =“store_true”)

>>> args = parser.parse_args()

> > > args.file

>>> args = parser.parse_args(['-f'])

> > > args.file

真正的


回复报价
分享:
Baidu