2017-06-12 155 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