【发布时间】:2017-11-16 11:28:13
【问题描述】:
当使用模块optparse 时,我可以获得所有命令行参数的所有默认值,如下所示:
import optparse
if __name__ == '__main__':
parser = optparse.OptionParser(usage='pokus --help')
parser.add_option("-d", "--debug", action='store_true', dest="debug",
default=False, help='Enabling debugging.')
options, args = parser.parse_args()
print(parser.defaults)
由于optparse 已被弃用,明智的做法是重写代码以使用argparse 模块。但是我找不到任何方法如何获取添加到解析器对象的所有命令行参数的所有默认值:
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(usage='pokus --help')
parser.add_argument("-d", "--debug", action='store_true', dest='debug',
default=False, help='Enabling debugging.')
args = parser.parse_args()
# <---- How to get default values for all arguments here?
# Not: vars(args)
我想在使用 (./app.py -d) 或不使用任何命令行参数 (./app.py) 运行程序时获取所有默认值。
【问题讨论】:
-
当省略开关时,默认值在
args对象上设置。您是否需要访问这些内容? -
因此,在您的示例中,当您不使用
-d运行程序时,args.debug设置为False。当您使用-d运行时,您需要知道默认为False的用例是什么? -
你考虑过使用
docopt吗? -
我找到了解决方案,当我运行
defaults = vars(parser.parser-args([]))时,我会得到包含所有默认值的字典。顺便说一句:当我有很多参数并且需要区分默认值和在命令行中指定的值时,我需要它。
标签: python argparse default-value