我试图在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
这样做的正确方法是什么?
答案 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
对象转储到日志中的一行中。