繁体   English   中英

AttributeError:'Namespace'对象没有属性'check'

[英]AttributeError: 'Namespace' object has no attribute 'check'

我试图在命令行上运行一个python脚本,其中包含不同的参数。 有一个位置参数(num),其他是可选参数。 我尝试运行[python newping.py 10 -c],但得到以下错误。 是否有任何我无法弄清楚的错误?

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",action="store_true", help="current appliance password. Between 8 and 15 characters, lower case, upper case and numbers")
 arg3 = parser.add_argument("-i", "--ignore",help="ignore the args",action="store_true", dest="ignore")
 arg4 = parser.add_argument("-c", "--check", help="performance metrics",action="store_true", dest="performance")
 arg5 = parser.add_argument("-m", "--node/model",dest="Node_Model",help="Type of the Model",action="store_true")
 parser.add_argument("-pf", "--permfile", help="increase output verbosity",action="store_true")
 args = parser.parse_args()

 result = fibo(args.num)
 print("The "+str(args.num)+"th fibonacci number is "+str(result))

 if args.permfile:

        for x in range(1,len(vars(args))):
            value = locals()["arg"+str(x)]
            print(value.dest+ " "+ value.help)

 if args.password:
    print("I am asking for the password")

 if args.ignore:
    print("This is to ignore the command")

 if args.check:
    print("Check the performance of the server")


 if __name__ == '__main__':
    Main()


 Output :
 The 10th fibonacci number is 55
 Traceback (most recent call last):
 File "newping.py", line 41, in <module>
  Main()
 File "newping.py", line 36, in Main
   if args.check:
   AttributeError: 'Namespace' object has no attribute 'check'

创建参数时

arg4 = parser.add_argument("-c", "--check", help="performance metrics",
    action="store_true", dest="performance")

dest参数告诉argparse使用名为performance的变量,而不是check 将您的代码更改为:

if args.performance:
    print("Check the performance of the server")

或删除dest param。

Python样式指南建议您将行限制为80个字符,这在发布到SO时很有用,这样我们就不必滚动查看代码了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM