Python 简单循环无法完成,无法找出原因
解决了 结果表明,由于文本编码,if语句被卡住了。我在收到之前对线路进行了消毒,它解决了问题 原始问题 我目前正在编写一个函数,从日志文件中读取最后5000行,向后循环这些行,然后在每行中查找特定文本 它以前工作得很好,现在如果找不到文本,它就无法通过整个循环 代码如下: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
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语句中断。我清理了日志阅读器脚本中的行,现在它可以工作了!