我已经创建了一个使用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。
的“行动”关键字决定如何处理命令行参数。
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
真正的