2016-05-09 33 views
0

コマンドラインでPythonスクリプトを別の引数で実行しようとしています。 1つの位置パラメータ(num)があり、その他はオプションパラメータです。私は[python newping.py 10 -c]を実行しようとしましたが、以下のエラーが出ます。私が把握できないエラーはありますか?あなたはdest PARAMTERがperformance、ないcheckという名前の変数を使用する​​に語った引数AttributeError: 'Namespace'オブジェクトに属性 'check'がありません

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

を作成

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' 

答えて

6

。あなたのコードを変更します。

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

またはdestのparamを削除します。

Pythonスタイルのガイドは、コードを表示するためにスクロールする必要がないように、行を80文字に制限することを推奨しています。

関連する問題