我从Python的文档中了解到我可以使用以下格式检查条件:
if x < 0:
else:
print('Else code')
我想运行一个命令并检查该命令是否成功,但是我收到“SyntaxError:invalid syntax”错误。救命啊!
我的格式大致是:
if myCommand(parameters):
print("It worked")
else:
print("It failed")
if mySecondCommand(parameters):
print("2nd command worked")
else:
print("2nd command failed")
这是我使用Netmiko库的实际代码:
from netmiko import ConnectHandler
if net_connect = ConnectHandler(device_type='cisco_ios', ip='11.22.33.44', username='domain.login', password='DomainPassword'):
print("Domain login succeeded.")
else:
print("Domain login failed.")
if net_connect = ConnectHandler(device_type='cisco_ios', ip='11.22.33.44', username='StandardUsername', password='StandardPassword'):
print("Standard login worked")
else:
print("Standard login failed")
我得到的输出是:
if net_connect = ConnectHandler(device_type='cisco_ios', ip='11.22.33.444', username='domain.login', password='DomainPassword'):
^
SyntaxError: invalid syntax
答案 0 :(得分:2)
考虑到对此问题提供的评论,您基本上需要的是如何知道连接是否失败。由于连接失败会引发异常,因此if语句不足以满足您的需求。相反,你想这样做:
from netmiko import ConnectHandler
try:
net_connect = ConnectHandler(device_type='cisco_ios', ip='11.22.33.44', username='domain.login', password='DomainPassword')
print("Domain login succeeded.")
except:
print("Domain login failed.")
try:
net_connect = ConnectHandler(device_type='cisco_ios', ip='11.22.33.44',username='StandardUsername', password='StandardPassword')
print("Standard login worked")
except:
print("Standard login failed")
如果您在Python中没有遇到“try-except”语句,我建议您查找它们。
答案 1 :(得分:1)
您的原始代码段会引发语法错误,您无法运行此代码(感谢 KyrST):
if x < 0:
else:
print('Else code')
你想要这个:
if not x < 0:
print("Not X < 0 code")
导致错误的问题在于:
if net_connect = ConnectHandler(device_type='cisco_ios', ip='11.22.33.44', username='domain.login', password='DomainPassword'):
在Python中,你不能在一个条件中分配一个值,即使你做了,你会把它与它进行比较? 你应该做的不是上面的事情:
net_connect = ConnectHandler(device_type='cisco_ios', ip='11.22.33.44', username='domain.login', password='DomainPassword'):
if net_connect == some_check_here:
some_check_here有一些值可以用来比较出错的地方,我不确定netmiko如何处理错误,我的猜测是你必须捕获异常。
答案 2 :(得分:0)
您正试图在 if net_connect == ConnectHandler(device_type='cisco_ios', ip='11.22.33.44', username='domain.login', password='DomainPassword'):
...
语句中分配变量(Python中不允许),而不是检查是否相等。
尝试:
==
并注意使用=
代替type
Trows = record
private
Fcode: string;
Qty: Double;
cena: Currency;
procedure Setcode(const value: string);
public
property code: string read Fcode write SetCode;
end;
Tcart = class(TObject)
private
Frow: array of Trows;
function Getrow(Index: Integer): Trows;
procedure Setrow(Index: Integer; const Value: Trows);
public
ID: integer;
CustName: string;
Suma: currency;
Payed: boolean;
constructor Create(const Num: Integer);
destructor Destroy;
function carttostr: string;
procedure setcode(Index: integer;val: string);
property Row[Index: Integer]: Trows read Getrow write setrow;
end;
。
答案 3 :(得分:0)
不幸的是,Python不能在if语句中使用变量赋值 - 它不能用作表达式。
使用=
运算符,您尝试分配 net_connect变量,而不是将其进行比较。
==
运算符是用于比较的正确运算符,因此:
if net_connect == ConnectHandler(device_type='cisco_ios', ip='11.22.33.44', username='domain.login', password='DomainPassword'):
是正确的,因为你要比较两者。
您的原始if net_connect = ConnectHandler(device_type='cisco_ios', ip='11.22.33.444', username='domain.login', password='DomainPassword'):
,ConnectHandler到net_connect。