当提供选项时,为optionparser设置默认选项

2024-10-01 17:22:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python选项解析器,它解析可选的--list something选项。 我还希望--list something选项有一个可选参数(一个选项)

在这里使用参数default="simple"不起作用,否则simple总是 是默认值,而不仅仅是在给定--list某物时。在

from optparse import OptionParser, OptionGroup
parser = OptionParser()
options = OptionGroup(parser, "options")
options.add_option("--list-something",
                   type="choice",
                   choices=["simple", "detailed"],
                   help="show list of available things"
                  )
parser.add_option_group(options)
opts, args = parser.parse_args()
print opts, args

上述代码产生了这种情况:

^{pr2}$

但我想让它成形:

[jens@ca60c173 ~]$ python main.py --list-something simple
{'list_something': 'simple'} []
[jens@ca60c173 ~]$ python main.py --list-something 
{'list_something': 'simple'} []
[jens@ca60c173 ~]$ python main.py 
{'list_something': None} []

我希望在Python2.4到3.0(不包括3.0)中可以开箱即用的东西

因为argparse只在python2.7中引入,所以我不能使用它。在


Tags: pyaddparser参数main选项argssimple
2条回答

python中的Optparser没有默认值。
但是,您可以使用以下选项-

# show help as default
if len(sys.argv) == 1:
  os.system(sys.argv[0] + " -h")
  exit()

这将使用-h选项运行相同的脚本,然后退出。
请注意-您将需要导入sys模块。在

Optparse没有任何选项可以轻松完成此操作。相反,您必须为您的选项创建一个自定义回调。解析选项时会触发回调,此时,您可以检查其余的参数,以查看用户是否为该选项设置了参数。在

查看文档的自定义回调部分,尤其是Callback example 6: variable arguments。在

相关问题 更多 >

    热门问题