在python中记录argparse的值

时间:2012-07-20 01:51:54

标签: python logging argparse

我试图在python中同时使用argparse和logging模块。我有一个运行的程序,它有很多可能的选项,我已经成功实现了argparse模块来处理这个任务。

我想保留程序运行时每个选项所具有的值的记录,并将其发送到日志文件。我尝试了以下几件事,并将我遇到的相关错误作为评论包含在其中。

parser = argparse.ArgumentParser()
parser.add_argument('input', action="store", default='fort.13', type=str)

args = parser.parse_args()

# First try:
logging.info("Input args: " + args)
# TypeError: cannot concatenate 'str' and 'Namespace' objects

# Second try:
for x in args:
  logging.info(x)
# TypeError: 'Namespace' object is not iterable

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:8)

您可以使用vars获取已解析参数的属性:

for arg, value in sorted(vars(args).items()):
    logging.info("Argument %s: %r", arg, value)

详见the docs

答案 1 :(得分:1)

logging.info("Input args: %r", args)

只需将包含所有参数的整个Namespace对象转储到日志中的一行中。