擅长:python、mysql、java
<p>第二个<code>readline()</code>在for循环中,该循环对可能要匹配的消息进行迭代,因此在检查所有消息之前,代码将移到下一行。你知道吗</p>
<p>尝试将其移到外部范围:</p>
<pre><code>def checkLog(path, level, message):
datafile = open(path)
line_file = datafile.readline()
while line_file != "":
for text in message:
if level + " " + text in line_file:
return True
line_file = datafile.readline()
return False
</code></pre>
<p>您的代码可以这样编写:</p>
<pre><code>def checkLog(path, level, message):
with open(path) as datafile:
for line in datafile:
for text in message:
if (level + " " + text) in line:
return True
return False
</code></pre>
<p>这避免了对<code>readline()</code>的调用,而不是对file对象进行迭代,从而简化了代码。此外,它还使用上下文管理器(<code>with</code>语句)打开文件,这将确保文件正确关闭。你知道吗</p>