使用 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 上遗漏了一些东西)
再次感谢