简单的循环不会完成,无法弄清楚原因

时间:2015-07-10 09:18:02

标签: python loops if-statement

解决!

由于文本编码,if语句卡住了。我在接收之前对线路进行了消毒,并解决了问题。

原始问题

我目前正在编写一个函数,它从日志文件中读取最后5000行,然后向后循环,然后在每行中查找某些文本。

以前工作正常,如果找不到文本,它现在没有通过整个循环。

以下是代码:

for line in reversed(log_lines):
    if machine_id_line in line and rating_key_line in line:
        # Currently only checking for ipv4 addresses
        logger.debug(u"Found possible IP addres in line %s" % line)
        ipv4 = re.findall(r'[0-9]+(?:\.[0-9]+){3}', line)
        if ipv4:
            # The logged IP will always be the first match and we don't want localhost entries
            if ipv4[0] != '127.0.0.1':
                logger.debug(u"Matched IP address (%s) for stream ratingKey %s and machineIdentifier %s."
                               % (ipv4[0], rating_key, machine_id))
                 return ipv4[0]

logger.debug(u"Unable to find IP address on first pass. Attempting fallback check in 5 seconds...")

它应该做的是查找一个包含两个字符串的行(machine_id_line和rating_key_line),如果它找不到包含这两个字符串的行,那么它将失败回到另一个低于此字符串的循环。

如果找到两个字符串,循环工作正常。如果我尝试一下,除了捕获第一个if语句之外它也可以正常工作(但不会给出任何例外)。

如果它找不到包含两个字符串的行,那么它就会死掉,并且不会到达上面代码中的最后一行。

我无法弄清楚为什么我需要将异常捕获到整个if语句。

是否应该足以检查字符串?

0 个答案:

没有答案