【问题标题】:Working on AXL scripts for CUCM - why does this code handle only the last item?处理 CUCM 的 AXL 脚本 - 为什么此代码只处理最后一项?
【发布时间】:2019-12-03 10:18:29
【问题描述】:

我正在尝试这段代码并且它工作正常:

phone_list = resp['return'].phone
for phone in phone_list:
    x = (phone.name)
    print(x)

try:
    resp = service.removePhone(name = x)    
except Fault:
    show_history()

print(x) 给出 3 个值:SEP003C53B8F073SEP001FBB3669EASEP003A33B8F041

问题是当我将它传递给下面的 try 块 (removePhone) 以删除这 3 部电话时:它只删除第一个。

我不知道如何将变量分配给单独的输出项。请让我知道我能做到这一点。

这是执行协议:

>>> phone_list = resp['return'].phone
>>> for phone in phone_list:
...     x = (phone.name)
...     print(x)
...
SEP001B53B8F075
SEP001FCA3669EA
>>>
>>>
>>> try:
...     resp = service.removePhone(name = x)
... except Fault:
...     show_history()
... else:
...     print('Deleted Phone:')
...     print( resp )
...
Deleted Phone:
{
    'return': '{C979366C-491D-4F12-B058-ECB789AA326A}',
    'sequence': None
}

此代码刚刚从服务器中删除了第二部电话 (SEP001FCA3669EA)。第一部手机还在。

【问题讨论】:

  • 你能用两次尝试的输出更新问题吗?例如代码:“” 当前输出:X 预期输出:Y
  • 也许您应该缩进 try ... except 块,以便在每次循环迭代时执行它。
  • @Raghavsalotra:请立即检查代码。
  • @LaurenzAlbe:我认为它已经缩进了。你能解释一下吗?

标签: python python-3.x cisco-axl


【解决方案1】:

按照您的代码编写方式,for 循环不包括对removePhone 的调用的try 块。可以看到,try 块只有在循环完成后才会进入。

循环执行后,x 的值将是循环中的最后一个值。因此,只有最后一部手机被移除。

我认为您想为循环的每次迭代执行 try 块。为此,您必须缩进它以使其成为循环的一部分:

for phone in phone_list:
    x = (phone.name)
    print(x)

    try:
        resp = service.removePhone(name = x)    
    except Fault:
        show_history()

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 2011-12-18
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多