2011-12-10 84 views
1

我需要一些關於使用argparse的幫助。我想實現的是我只需要傳入一個參數,它可以是以下之一:--k, --r, --b, --p,(ignore the rest)。如果參數計數不是1,則輸出「用法」信息並退出。此外,該程序需要知道哪個標誌傳入以創建相應的對象。我嘗試了幾次,但我不工作,任何人都可以給我一個提示嗎?謝謝。需要幫助python命令行參數使用argparse

+3

「我嘗試了幾次,但我不工作」:你能發表你試過的東西,並解釋什麼是行不通的嗎? –

回答

4

你需要使用來實現這一目標什麼是mutually exclusive group

import argparse 

parser = argparse.ArgumentParser() 
group = parser.add_mutually_exclusive_group() 
group.add_argument('-k', action='store_true') 
group.add_argument('-r', action='store_true') 
group.add_argument('-b', action='store_true') 
group.add_argument('-p', action='store_true') 
parser.parse_args() 

因爲它可以在下面的例子中可以看出,在一個互斥組只有一個選項,允許在同一時間:

$ python test.py -k -r -b -p 
usage: test.py [-h] [-k | -r | -b | -p] 
test.py: error: argument -r: not allowed with argument -k 

要檢查哪些標誌傳遞,你只需要看看由parse_args方法(標誌p返回argparse.Namespace對象將被設置爲True)。

+0

幹得好!看起來我完全是在錯誤的軌道上,thx爲樣本! –

3

如何根本不使用​​?這似乎並不是必要的。

if len(sys.argv) != 2: 
    print_usage() 
arg = sys.argv[1] 
if arg not in ["--k", "--r", "--b", "--p"]: 
    print_usage() 
# Do whatever you want with arg 
+0

這也沒關係! –