Python AttributeError: 'Namespace' 对象没有属性 'check'
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/37126551/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
AttributeError: 'Namespace' object has no attribute 'check'
提问by Goutam
I am trying to run a python script on the command line with different arguments to it. There is one positional paramter ( num ) and others are optional parameters. I try to run [ python newping.py 10 -c ] but get the below error. Is there any error that I am not able to figure out?
我正在尝试在命令行上使用不同的参数运行一个 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'
回答by tdelaney
When you created the argument
当您创建参数时
arg4 = parser.add_argument("-c", "--check", help="performance metrics",
action="store_true", dest="performance")
The dest
paramter told argparse
to use a variable named performance
, not check
. Change your code to:
该dest
放慢参数告诉argparse
使用命名变量performance
,而不是check
。将您的代码更改为:
if args.performance:
print("Check the performance of the server")
or remove the dest
param.
或删除dest
参数。
Python style guides suggest that you limit lines to 80 characters and thats helpful when posting to SO so that we don't have to scroll to see the code.
Python 样式指南建议您将行数限制为 80 个字符,这在发布到 SO 时很有帮助,这样我们就不必滚动查看代码。