2016-04-08 8 views
-1

arg1からarg3までのすべての異なる引数に対して、arg1.dest、arg1.helpなどを使用してすべての引数情報を取得しようとしています。私はarg + "1,2,3"を追加してforループを使用していますので、後で挿入するためにsqlコードを書き込む間に、別の挿入コマンドを使用せずにループを1つのループ内で取得できます。ここでタイプキャストエラーに直面しています。 arg1は以前のパーサオブジェクトですが、文字列に変換して追加しているので、arg1.destまたはarg1.helpにはもうアクセスできません。Argparse - pythonを使用しているときにパーサーオブジェクトに型キャストを行う

ケースを適切なパーサーオブジェクトに入力する方法はありますか?どんな入力も高く評価されます。

import argparse 

def fibo(num): 
    a,b = 0,1 
    for i in range(num): 
     a,b=b,a+b 
    return a 

def Main(): 
    parser = argparse.ArgumentParser(description="To the find the fibonacci number of the give number") 
    arg1 = parser.add_argument("num",help="The fibnocacci number to calculate:", type=int) 
    arg2 = parser.add_argument("-p", "--password", dest="password", help="current appliance password") 
    arg3 =parser.add_argument("-i", "--ignore", action="store_true", dest="ignore") 
    parser.add_argument("-x", "--dbinsert", help="insert data in db",action="store_true") 
    args = parser.parse_args() 
    result = fibo(args.num) 
    print("The "+str(args.num)+"th fibonacci number is "+str(result)) 

    if args.dbinsert: 
     for x in range(1,len(vars(args))): 
      value = ("arg"+str(x)) 
      print(value.dest) 

    if __name__ == '__main__': 
     Main() 
----------------------------------------------------------------- 
When I run : python myping.py 10 --dbinsert 
Output : The 10th fibonacci number is 55 
Traceback (most recent call last): 
File "myping.py", line 42, in <module> 
    Main() 
File "myping.py", line 34, in Main 
    print(value.dest) 
AttributeError: 'str' object has no attribute 'dest' 

答えて

1

変更value = ("arg"+str(x))~value = locals()["arg"+str(x)]

関連する問題