使用python optparse.py,有没有一种方法可以确定特定选项值是从命令行还是默认值设置的。理想情况下,我希望有一个字典,就像defaults一样,但包含实际从命令行提供的选项。我知道你可以将每个选项的值与defaults进行比较,但这不能区分通过命令行传递匹配默认值的值。谢谢!抱歉我的原始措辞不太清楚。我有很多从批处理文件调用的脚本。出于审计目的,我想报告传递的选项以及它们是从命令行、默认还是其他方式传递到日志文件中。使用defaults,您可以确定选项是否与默认值匹配,但这仍然无法告诉您它是否实际上是从命令行提供的。这可能是相关的:如果选项从命令行传递并与默认值相符,如果您随后在代码中更改默认值,则脚本仍将获得相同的值。对我来说,拥有与defaults等效的内容(包含实际提供的值)会感觉非常自然。为了使问题具体化,在此示例中:
>>> 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 上漏掉了什么细节)
再次感谢