I've tried to learn how argparse.ArgumentParser
works and I've write a couple lines for that :
global firstProduct
global secondProduct
myparser=argparse.ArgumentParser(description='parser test')
myparser.add_argument("product1",help="enter product1",dest='product_1')
myparser.add_argument("product2",help="enter product2",dest='product_2')
args=myparser.parse_args()
firstProduct=args.product_1
secondProduct=args.product_2
I just want to that when User run this script with 2 parameters my code assign them to firstProduct
and secondProduct
respectively. However it doesn’t work. Is there anyone to tell me why? thanks in advance
ArgumentParser() initializes the parser so that you can start to add custom arguments. To add your arguments, use parser. add_argument() . Some important parameters to note for this method are name , type , and required .
First, we need the argparse package, so we go ahead and import it on Line 2. On Line 5 we instantiate the ArgumentParser object as ap . Then on Lines 6 and 7 we add our only argument, --name . We must specify both shorthand ( -n ) and longhand versions ( --name ) where either flag could be used in the command line.
description– text to display before the argument help(default: none) epilog– text to display after the argument help (default: none) parents– list of ArgumentParser objects whose arguments should also be included. formatter_class– class for customizing the help output.
Omit the dest
parameter when using a positional argument. The name supplied for the positional argument will be the name of the argument:
import argparse
myparser = argparse.ArgumentParser(description='parser test')
myparser.add_argument("product_1", help="enter product1")
myparser.add_argument("product_2", help="enter product2")
args = myparser.parse_args()
firstProduct = args.product_1
secondProduct = args.product_2
print(firstProduct, secondProduct)
Running % test.py foo bar
prints
('foo', 'bar')
In addition to unutbu's answer, you may also use the metavar
attribute in order to make the destination variable and the variable name that appears in the help menus different, as shown in this link.
For example if you do:
myparser.add_argument("firstProduct", metavar="product_1", help="enter product1")
You will have the argument available for you in args.firstProduct
but have it listed as product_1
in the help.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With