<pre><code>import datetime
import time
def lines( path_to_file ):
'''Open path_to_file and read the lines one at a time, yielding tuples
( date of line, time of line, status before line )'''
with open( path_to_file ) as theFile:
for line in theFile:
line = line.rsplit( " ", 1 )
yield (
datetime.datetime.strptime( line[ 0 ], "%d/%m/%Y %H:%M:%S" ),
line[ 1 ].split( "_" )[ 3 ]
)
def return_status( statDate ):
for lineDate, lineStatus in lines( path_to_file ):
if statDate > lineDate:
continue
return lineStatus
</code></pre>
<p>这有道理吗?或者你想让我解释一下吗?在</p>
<h3>编辑</h3>
<p>你刚才说的是真的吗?在</p>
<blockquote>
<p>date matches and time is less than the time in the function call</p>
</blockquote>
<p>换句话说,如果调用<code>return_status( 16/07/2010, <some.time> )</code>,会发生什么?你应该下线吗?在</p>
<h3>另一个编辑</h3>
<p>我对它进行了编辑,以便进行合理的<code>datetime</code>比较。我想你已经错误地理解了这个不等式:我们循环遍历文件中的行,直到我们希望获取的日期之后的第一行。一旦这个测试失败,<code>line</code>是所需日期之后的第一行,因此它的<code>from</code>值就是我们请求时的状态。您应该使用<code>datetime.datetime</code>调用函数。在</p>