使用python optparse.py,是否有办法确定是从命令行还是从默认值设置特定的选项值。
理想情况下,我希望有一个类似默认值的dict,但包含命令行实际提供的选项
我知道您可以将每个选项的值与默认值进行比较,但这无法区分通过与默认值匹配的命令行传递的值。
谢谢!
编辑
对不起,我原来的措辞不太清楚。
我有很多从批处理文件调用的脚本。出于审核目的,我想报告传递的选项,以及这些选项是从命令行、默认值还是其他方式传递到日志文件。
使用默认值,您可以判断一个选项是否与默认值匹配,但这仍然不能告诉您它是否实际上是从命令行提供的。这可能是相关的:如果从命令行传递一个选项并与默认值一致,那么如果更改代码中的默认值,脚本仍将获得相同的值。
对我来说,有一个相当于默认值的值,包含实际提供的值,这是很自然的。
要使问题具体化,在本例中:
>>> sys.argv = ['myscript.py','-a','xxx']
>>> import optparse
>>> parser = optparse.OptionParser()
>>> parser.add_option('-a', default = 'xxx')
>>> parser.add_option('-b', default = 'yyy')
我怎么知道选项a是从命令行传递的。是手动解析命令行的唯一方法吗?
(我知道这是一个很小的问题,但我想如果我错过了optparse上的smthing,应该问问这个问题)
再次感谢
不知道你的代码是不可能给出更好的答案,但是。。。
只是不要将默认值传递给解析器并检查
None
值。None
值是optparse
库的默认值,因此您可以检索自己的默认值并按通常的方式工作;扩展
optparse
使其专门化。我不知道你的程序,但通常当配置相同时,它不是一个好的设计更改行为。
而不是下面的样板代码:
如果使用下面的代码,则将有一个附加值对象
opts_no_defaults
,其中包含用户显式指定的选项:最后,
opts
应该与初始样板代码中的相同。用法:
如果Python维护人员将建议的函数包含到OptionParser类中,那就太好了。
相关问题 更多 >
编程相关推荐