2010-07-13 48 views

回答

32

查看argparse模塊(或針對較舊Python版本的optparse)。
請注意,​​/optparse是更新,更好地替代getopt,所以如果你是新手,這是他們推薦的選擇。從getopt文檔:

注意getopt模塊是命令行選項的解析器,其API設計爲C getopt()函數的用戶熟悉。不熟悉C getopt()函數的用戶,或者希望編寫更少代碼並獲得更好幫助和錯誤消息的用戶應該考慮使用argparse模塊。

+1

並以「老的Python版本」,他的意思是每一個發佈8天以上版本前。 – 2010-07-13 06:21:16

+6

@Forest - 噓,我們現在是未來! ;) – tzaman 2010-07-13 06:36:14

+3

隨着時間的推移,這個答案變得越來越正確。 – jcdyer 2014-02-28 18:04:46

3

Python有內置的參數處理,與getopt模塊。

它可以處理多種形式的參數以及「裸體」和參數化版本(--help--num=7)。

對於您的具體使用情況(多一點),你可能要尋找的東西,如:

opts,args = getopt.getopt(argv,"b:vVh",["block=", "verbose", "very-verbose", "help"]) 

我不知道把我的頭頂部,如果它允許多字符單連字變體,如-vv。我只用-v-V自己讓我的生活更輕鬆。

1

比鏈接一個更好的選擇是模塊OptParse或getopt的,並根據其Python版本您正在使用,最新的ones..2.7,和3.1.2,內置了一個更新模塊。官方的python.org參考文檔提供了一組非常豐富的文檔和示例。如果您轉到python.org,只需快速搜索OptParse或GetOpt,就可以獲得所需的一切。

1

optfunc是一個有趣的小模塊。如果你想快速寫出一個小腳本,這太好了。對於更大的事情,我會與其他人寫的argparse一起去。

-4

有可能是一個更好的辦法,但我只想使用sys.argv中,放在任何地方條件語句需要即

if '--v' or '--vv' in sys.argv : 
    print 'verbose message'