2017-06-12 134 views
0

我正在尝试为我的程序使用内置Python模块​​创建一个命令行参数解析器。我希望用户能够正常运行我的程序,或者运行演示程序。运行演示需要一个演示编号,这将是一个命令行参数。所以,基本上,命令行参数可以采用其中一种格式。Python argparse困难

  • python3 blah.py normal
  • python3 blah.py demo <demo#>

如何允许用户使用任何选项,但不能同时在同一时间?另外,如何在使用演示选项时制作所需的演示号码,但在使用普通选项时不能使用演示号码?

在此先感谢。

回答

1

您可以使用互斥组(我已经改变参数-demo号和 - 正常):

import argparse 
parser = argparse.ArgumentParser() 
group = parser.add_mutually_exclusive_group() 
group.add_argument('-demo', action='store', 
        dest='demonum', 
        help='demo execution') 
group.add_argument('-normal', action='store_true', 
        help='normal execution') 
parsed = parser.parse_args() 
print(parsed.demonum) 
print(parsed.normal) 
+0

谢谢!另外,我该如何做到这一点,以便使用这两种选项都不合法? – Anonymous1847

+0

@ Anonymous1847即使你没有传递任何参数或1的参数,这是有效的。只有当你使用这两个参数时,它会说无效的'python.exe d:\ arguments.py -normal -demo 3' –

+0

是。我在问如何要求用户在互斥组中使用一个(和恰好一个)参数。 – Anonymous1847