Python 2.7 optparse没有读取第二个标志

时间:2015-10-07 18:18:08

标签: python 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不是。这很烦人。谁能看到我做错了什么?提前谢谢。

1 个答案:

答案 0 :(得分:1)

正如@ user3757614在评论中建议的那样,改为使用argparse

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