Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在给定选项时为optionparser设置默认选项_Python_Default Value_Choice_Optparse_Optionparser - Fatal编程技术网

Python 在给定选项时为optionparser设置默认选项

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

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

在这里使用参数
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上开箱即用,自定义回调是解决方案,我还发现了一个类似的问题,回答了我的问题:自定义回调是解决方案,我还发现了一个类似的问题,回答了我的问题: