Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 简单循环无法完成,无法找出原因_Python_Loops_If Statement - Fatal编程技术网

Python 简单循环无法完成,无法找出原因

Python 简单循环无法完成,无法找出原因,python,loops,if-statement,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

解决了

结果表明,由于文本编码,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语句上


if不足以检查字符串吗?

你说它刚死是什么意思?当您放置try/except块时,代码是否进入except块?如果是这样,捕获的异常是什么?我只是尝试使用print而不是内置的logger函数,现在我看到在运行循环时打印异常。让我看看能不能弄明白。可能是编码问题。的确!原来是日志行中的文本编码问题导致if语句中断。我清理了日志阅读器脚本中的行,现在它可以工作了!