Python 在给定选项时为optionparser设置默认选项
我有一个python选项解析器,它解析一个可选的--list something选项。 我还希望--list something选项具有可选参数(选项) 在这里使用参数Python 在给定选项时为optionparser设置默认选项,python,default-value,choice,optparse,optionparser,Python,Default Value,Choice,Optparse,Optionparser,我有一个python选项解析器,它解析一个可选的--list something选项。 我还希望--list something选项具有可选参数(选项) 在这里使用参数default=“simple”不起作用,否则simple将始终起作用 是默认值,而不仅仅是在--列出某些内容时 from optparse import OptionParser, OptionGroup parser = OptionParser() options = OptionGroup(parser, "options
default=“simple”
不起作用,否则simple将始终起作用
是默认值,而不仅仅是在--列出某些内容时
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
上述代码正在生成以下内容:
[jens@ca60c173 ~]$ python main.py --list-something simple
{'list_something': 'simple'} []
[jens@ca60c173 ~]$ python main.py --list-something
Usage: main.py [options]
main.py: error: --list-something option requires an argument
[jens@ca60c173 ~]$ python main.py
{'list_something': None} []
但我想让它发生:
[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} []
我想要一些在python 2.4中开箱即用的东西,直到3.0(不包括3.0)
由于argparse仅在python 2.7中引入,因此我无法使用它。Optparse没有任何选项可以轻松实现这一点。相反,您必须为您的选项创建一个自定义回调。解析选项时会触发回调,此时,您可以检查其余的参数,查看用户是否为该选项设置了参数
特别是,请查看文档的“自定义回调”部分。optpasse没有任何选项可以轻松地执行此操作。相反,您必须为您的选项创建一个自定义回调。解析选项时会触发回调,此时,您可以检查其余的参数,查看用户是否为该选项设置了参数
请特别查看文档的“自定义回调”部分。python中的Optparser没有默认设置。
但是,您可以使用以下命令-
# show help as default
if len(sys.argv) == 1:
os.system(sys.argv[0] + " -h")
exit()
这将使用-h
选项运行相同的脚本,然后退出。请注意-您将需要导入sys模块。python中的Optparser没有默认设置。
但是,您可以使用以下命令-
# show help as default
if len(sys.argv) == 1:
os.system(sys.argv[0] + " -h")
exit()
这将使用-h
选项运行相同的脚本,然后退出。请注意-您需要导入sys模块。我认为使用
argparse
很容易做到这一点。我已经在python2.6中使用了argparse
,但我不知道它能用多久…谢谢你的建议,但是我不能使用任何外部依赖项,所以我更新了我的问题,我希望它能在python2.4-3.0上开箱即用。我认为argparse
很容易做到这一点。我已经在python2.6中使用了argparse
,但我不确定它能用多久…谢谢你的建议,但是我无法使用任何外部依赖项,所以我更新了我的问题,我希望它能在python 2.4-3.0上开箱即用,自定义回调是解决方案,我还发现了一个类似的问题,回答了我的问题:自定义回调是解决方案,我还发现了一个类似的问题,回答了我的问题: