解决!
由于文本编码,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语句。
是否应该足以检查字符串?