0

I am using Argparse as a means to command line utility execution. I have various arguments defined ( couple of them shown below ). I have a requirement to store argument name, help, type in the database in their respective columns.

I am not sure how to extract these three from each parse.add_argument and save it in some array/list. If you can share any inputs, that would be helpful.

     parser.add_argument("num",help="The fibnocacci number to calculate:", type=int)  # how to take the strings on the command line and turn them into objects
     parser.add_argument("-f","--file",help="Output to the text file",action="store_true")

1 Answer 1

1

Others think you want the results of parsing the commandlline, the values from the args namespace. But I suspect you want the Action object defined by the add_argument method

In an interactive shell I can define a parser as:

In [207]: parser=argparse.ArgumentParser()

In [208]: arg1= parser.add_argument("num",help="The fibnocacci number to calculate:", type=int) 

In [209]: arg2=parser.add_argument("-f","--file",help="Output to the text file",action="store_true")

In [210]: arg1
Out[210]: _StoreAction(option_strings=[], dest='num', nargs=None, const=None, default=None, type=<type 'int'>, choices=None, help='The fibnocacci number to calculate:', metavar=None)

In [211]: arg2
Out[211]: _StoreTrueAction(option_strings=['-f', '--file'], dest='file', nargs=0, const=True, default=False, type=None, choices=None, help='Output to the text file', metavar=None)

In [212]: parser._actions
Out[212]: 
[_HelpAction(option_strings=['-h', '--help'], dest='help', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help='show this help message and exit', metavar=None),
 _StoreAction(option_strings=[], dest='num', nargs=None, const=None, default=None, type=<type 'int'>, choices=None, help='The fibnocacci number to calculate:', metavar=None),
 _StoreTrueAction(option_strings=['-f', '--file'], dest='file', nargs=0, const=True, default=False, type=None, choices=None, help='Output to the text file', metavar=None)]

add_argument creates an Action subclass (based on action parameter). You can save this in your own variable, or find it in the _actions list of the parser.

Printing this shows some of its attributes, but you can examine, and even change more of them.

In [213]: arg1.help
Out[213]: 'The fibnocacci number to calculate:'

In [214]: arg1.type
Out[214]: int

In [215]: arg1.dest
Out[215]: 'num'

In [217]: vars(arg1)
Out[217]: 
{'choices': None,
 'const': None,
 'container': <argparse._ArgumentGroup at 0x8f0cd4c>,
 'default': None,
 'dest': 'num',
 'help': 'The fibnocacci number to calculate:',
 'metavar': None,
 'nargs': None,
 'option_strings': [],
 'required': True,
 'type': int}

You many need to examine the class definitions in the argparse.py file to understand these attributes.

Sign up to request clarification or add additional context in comments.

2 Comments

when I do arg1.type i get <class 'int'> and not int?
I get that with print(arg1.type). int is both a class and a function that produces an integer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.