2016-04-08 20 views
-1

Tüm argüman bilgilerini arg1.dest, arg1.help vb. Kullanarak arg1'den arg3'e kadar tüm argümanlar için almaya çalışıyorum. Ben bir + döngü içine almak için arg + "1,2,3" ekleyerek bir döngü kullanmak ve daha sonra ekleme için sql kodu yazarken farklı insert komutları kullanamıyorum. Burada bir yazım hatasıyla karşılaşıyorum. arg1, daha önce bir ayrıştırıcı nesnesidir, ancak dize dönüştürüp eklediğim için arg1.dest veya arg1.help'e artık erişemiyorum.Tipografi Argparse - python kullanırken Ayrıştırıcı nesnesine dize

Doğru ayrıştırıcı nesnesine yazı yazmanın bir yolu var mı? Herhangi bir girdi son derece takdir edilmektedir. value = locals()["arg"+str(x)] için

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' 

cevap

1

Değişim value = ("arg"+str(x)).