web-dev-qa-db-ja.com

python argparse.ArgumentParserメソッドを使用

argparse.ArgumentParserがどのように機能するかを学ぼうとしましたが、そのために数行書きました。

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

ユーザーが2つのパラメーターを使用してこのスクリプトを実行するときに、コードがそれらをそれぞれfirstProductsecondProductに割り当てます。ただし、機能しません。理由を教えてくれる人はいますか?前もって感謝します

19
caesar

位置引数を使用する場合は、destパラメーターを省略してください。位置引数に指定された名前は、引数の名前になります。

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)

ランニング % test.py foo barプリント

('foo', 'bar')
17
unutbu

unutbuの回答 に加えて、宛先変数とに表示される変数名を作成するためにmetavar属性を使用することもできます。 このリンク に示すように、ヘルプメニューは異なります。

たとえば、次の場合:

myparser.add_argument("firstProduct", metavar="product_1", help="enter product1")

引数はargs.firstProductで利用できますが、ヘルプではproduct_1としてリストされています。

10
villaa