Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: print ALL argparse arguments including defaults

I want to log the usage of a python program which uses the argparse module. Currently, the logger records the command line usage similar to the answer given in this post. However, that only gives the command line arguments, and not including the defaults set later in argparse (which is the intended use, after all). Is there a simple way to print ALL the argparse options to create a nice, tidy usage log entry that includes the default values?

It isn't difficult to go into the argparse namespace to fetch each argument by name, but I am hoping that someone has a concise way of extracting the needed info.

In response to the accepted answer:

Great! If anyone is interest, here is my implementation with logging:

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))
like image 788
NWaters Avatar asked Dec 07 '22 20:12

NWaters


1 Answers

I've done something similar in an application, hopefully the below snippets give you what you need. It is the call to vars that gave me a dictionary of all the arguments.

parser = argparse.ArgumentParser(description='Configure')
....
args = parser.parse_args()
......
options = vars(args)
like image 114
scotty3785 Avatar answered Dec 31 '22 12:12

scotty3785