2015-10-07 38 views
0

有人可以幫我一下嗎?我不知道我在做什麼錯,但我似乎無法讓我的第二個選項從命令行讀取。Python 2.7 optparse不讀第二旗

from optparse import OptionParser 

parser=OptionParser() 
parser.add_option("-s", action="store", type="string", dest="scenario") 
parser.add_option("-l", action="store", type="string", dest="logger") 
(options, args)=parser.parse_args() 

print options.scenario 
print options.logger 
print options 

打印效果

>>python test.py -sfoo -lbar 
foo 
None 
{'logger': None, 'scenario': 'foo'} 

此外,我不能把一個空間,在標誌和參數之間-sfoo是確定的,但-s foo不是。這很煩人。任何人都可以看到我做錯了什麼?提前致謝。

+4

optparse是有利於argparse的貶值:https://docs.python.org/2/library/optparse.html – user3757614

回答

1

由於@ user3757614建議在他的評論中使用​​來代替。

import argparse 

parser = argparse.ArgumentParser() 

parser.add_argument('-s', '--scenario', required=True, dest="scenario") 
parser.add_argument('-l', '--logger', required=True, dest="logger") 

args = parser.parse_args() 

print args 
print args.scenario 
print args.logger 

,並在命令行:

$ python test.py -s test1 -l test2 
Namespace(logger='test2', scenario='test1') 
test1 
test2