Python:嵌套循环未按预期运行

时间:2013-10-18 20:17:42

标签: python loops python-2.7

我有一个循环,它将命令写入调制解调器,然后读取调制解调器,直到找到“OK”或“ERROR”。循环工作;一旦。出于某种原因,一旦循环第一次结束,它就会中断。这是代码:

for modem in ser:
    for port in modem:
        print port.name
        port.write('ati\r\n')
        a=port.read(size=2000)
        a=a.splitlines()
        t=False
        while t!=True:
            for line in a:
                print line
                if line=='OK' or line=='ERROR' or '$GP' in line:
                    t=True

  print 'howdy ho diddly doo'

我也像这样制作了while循环:

while True:
    for line in a:
        print line
        if line=='OK' or line=='ERROR' or '$GP' in line:
            t=True
        if t==True:
            break

但是,对于这两个版本,结果如​​下:

COM71
ati

Manufacturer: Sierra Wireless, Incorporated
Model: MC8705
Revision: T3_5_2_1AP R517 CNSZXD00000128 2012/02/07 13:03:25
IMEI: 353567040568900
IMEI SV: 5
FSN: CC30942172510
3GPP Release 7
+GCAP: +CGSM,+FCLASS,+DS


OK
howdy ho diddly doo
>>> len(Ports) #Ports is ser (the list that I pass through for the function)
4
>>> 

我肯定知道ser的长度大于1,并且循环应该运行不止一次。我做错了什么?

1 个答案:

答案 0 :(得分:0)

看看你的内部while循环:

a=port.read(size=2000)
a=a.splitlines()
t=False
while t!=True:
    for line in a:
        print line
        if line=='OK' or line=='ERROR' or '$GP' in line:
            t=True

您迭代a的行,并将t标志设置为True,如果其中一行是“OK”,“ERROR”或喜欢。但是,在for循环的每次迭代中,a循环遍历相同的while!因此,while循环在第一次迭代后停止,如果第一组行满足条件,或者遇到无限循环。

可能你错过了a=port.read(size=2000)循环中的另一个while