2013-04-30 40 views
1

我的項目是處理三個參數如何處理這個我這樣的代碼getopt的3種不同的ARG處理程序

def main(argv): 
try: 
    opts, args = getopt.getopt(argv,"d:f:w:",['--i','--u','--v']) 
    print opts 
    print args 

except getopt.GetoptError: 
    print 'Option Error' 

if __name__ == '__main__': 
    try: 
     main(sys.argv[1:]) 
    except Exception, e: 
     print str(e) 

我將運行這段代碼,我會得到這個ouptut ./code.py -d - 我-f --u包1包2 輸出

[('-d', '--i'), ('-f', '--u')] 
['package1', 'package2'] 

,但我會想到這樣的格式,如何修改, ./code.py -d --i包1 -f --u包2的輸出。 ..

[('-d', '--i',), ('-f', '--u')] 
['package1', 'package2'] 

回答

2

我想你誤會了getopt的工作原理。 getopt的參數是getopt.getopt(args, options[, long_options])。 這意味着你的情況

-d equals --i 
-f equals --u 
-w equals --v 

對於長選項,一個好的做法是給他們長的名字。例如: -d應該等於 - 目標。

詳情請參閱http://docs.python.org/2/library/getopt.html#getopt.getopt

所以你的情況正確的CLI命令應該是第一個參數是'要麼

./code.py -d package1 -f package2 

OR

./code.py -d package1 -f package2 

甚至混合

./code.py --i package1 -f package2 

選擇 d'和 arg第一個參數是'package1'。