2011-06-17 42 views

回答

38

這是如何我這樣做,我通常使用相同的例子基本模板:

import sys 
import getopt 

try: 
    opts, args = getopt.getopt(sys.argv[1:], 'm:p:h', ['miner=', 'params=', 'help']) 
except getopt.GetoptError: 
    usage() 
    sys.exit(2) 

for opt, arg in opts: 
    if opt in ('-h', '--help'): 
     usage() 
     sys.exit(2) 
    elif opt in ('-m', '--miner'): 
     miner_name = arg 
    elif opt in ('-p', '--params'): 
     params = arg 
    else: 
     usage() 
     sys.exit(2) 

我不認爲有任何9參數限制。

+2

「argv」需要是「sys.argv」 – eludom 2015-03-30 13:39:34

+3

您需要從'argv'數組中刪除腳本名稱,例如:arvg [1:]以使此行正常工作: 'opts,args = getopt。 getopt(argv [1:],'m:p:h',['miner =','params =','help']) – 2015-04-14 09:32:16

+2

什麼是usage()函數用於? – nurulhudamustaqim 2016-08-07 21:15:22

3

您是否試過閱讀模塊getopthttp://docs.python.org/library/getopt.html?highlight=getopt#module-getopt)的python文檔?它提供了一個如何使用getopt的簡單示例。換班的含義是什麼意思?如果您想檢查用戶沒有使用多於9個參數,則可以檢查sys.argv列表的長度,該列表包含傳遞給該腳本的所有選項/參數。第一個元素是被調用的腳本的名稱,所以長度總是至少爲1。你可以這樣做:

if len(sys.argv) > 10 
    print('Too many arguments.') 
9

谷歌搜索會有幫助。在標準庫看看getoptargparse模塊:

import argparse 

parser = argparse.ArgumentParser(description='Process some integers.') 
parser.add_argument('integers', metavar='N', type=int, nargs='+', 
        help='an integer for the accumulator') 
parser.add_argument('--sum', dest='accumulate', action='store_const', 
        const=sum, default=max, 
        help='sum the integers (default: find the max)') 

args = parser.parse_args() 
print args.accumulate(args.integers) 

然後運行它的預期:

$ prog.py -h 
usage: prog.py [-h] [--sum] N [N ...] 

Process some integers. 

positional arguments: 
N   an integer for the accumulator 

optional arguments: 
-h, --help show this help message and exit 
--sum  sum the integers (default: find the max) 

當與適當的參數運行,它打印或者總和或最大的命令行整數:

$ prog.py 1 2 3 4 
4 

$ prog.py 1 2 3 4 --sum 
10 

這是直接從標準庫。

+0

Argparse及其教程非常棒。 – Noumenon 2015-07-11 19:38:35

+0

對不起,但我建議你在深入'argparse'之前尋找'docopt' ... – flaschbier 2017-03-23 11:56:31

相關問題