打印所有 argparse 参数,包括默认值

Print all argparse arguments including defaults

我想记录使用 argparse 模块的 python 程序的使用情况。目前,logger 记录的命令行用法类似于 this post 中给出的答案。但是,这仅提供命令行参数,不包括稍后在 argparse 中设置的默认值(毕竟这是预期用途)。有没有一种简单的方法来打印所有 argparse 选项以创建一个漂亮、整洁的包含默认值的 usage 日志条目?

进入 argparse 命名空间按名称获取每个参数并不困难,但我希望有人有一种简洁的方法来提取所需的信息。

回应

太棒了!如果有人感兴趣,这是我的日志实现:

logger.info("Usage:\n{0}\n".format(" ".join([x for x in sys.argv])))
logger.debug("All settings used:") for k,v in sorted(vars(args).items()):
    logger.debug("{0}: {1}".format(k,v))

我在一个应用程序中做过类似的事情,希望下面的代码片段能满足您的需求。是对 vars 的调用给了我一个包含所有参数的字典。

parser = argparse.ArgumentParser(description='Configure')
....
args = parser.parse_args()
......
options = vars(args)