使用Argparse-python时将字符串类型转换为解析器对象

使用Argparse-python时将字符串类型转换为解析器对象,python,argparse,Python,Argparse,我正在尝试使用arg1.dest、arg1.help等检索所有参数信息。。用于从arg1到arg3的所有不同参数。我通过添加arg+“1,2,3”来使用for循环,这样我就可以在一个循环中检索它,并且在稍后编写用于插入的sql代码时不会使用不同的insert命令。我在这里面临一个打字错误。arg1以前是一个解析器对象,但由于我正在转换为字符串并附加它,因此无法再访问arg1.dest或arg1.help 我们有没有办法将case-it键入正确的解析器对象?非常感谢您的任何意见 import ar

我正在尝试使用arg1.dest、arg1.help等检索所有参数信息。。用于从arg1到arg3的所有不同参数。我通过添加arg+“1,2,3”来使用for循环,这样我就可以在一个循环中检索它,并且在稍后编写用于插入的sql代码时不会使用不同的insert命令。我在这里面临一个打字错误。arg1以前是一个解析器对象,但由于我正在转换为字符串并附加它,因此无法再访问arg1.dest或arg1.help

我们有没有办法将case-it键入正确的解析器对象?非常感谢您的任何意见

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'
import argparse
def fibo(数量):
a、 b=0,1
对于范围内的i(num):
a、 b=b,a+b
归还
def Main():
parser=argparse.ArgumentParser(description=“查找给定数字的斐波那契数”)
arg1=parser.add_参数(“num”,help=“要计算的FibNoAcci数:”,type=int)
arg2=parser.add_参数(“-p”,“--password”,dest=“password”,help=“当前设备密码”)
arg3=parser.add_参数(“-i”,“--ignore”,action=“store_true”,dest=“ignore”)
parser.add_参数(“-x”,“--dbinsert”,help=“在db中插入数据”,action=“store_true”)
args=parser.parse_args()
结果=fibo(args.num)
打印(“第“+str(args.num)+”个斐波那契数是“+str(result))
如果args.dbinsert:
对于范围(1,len(vars(args))中的x:
值=(“arg”+str(x))
打印(value.dest)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
Main()
-----------------------------------------------------------------
运行时:python myping.py 10--dbinsert
输出:第10个斐波那契数为55
回溯(最近一次呼叫最后一次):
文件“myping.py”,第42行,在
Main()
文件“myping.py”,第34行,在Main中
打印(value.dest)
AttributeError:“str”对象没有属性“dest”
value=(“arg”+str(x))
更改为
value=locals()[“arg”+str(x)]