【发布时间】:2020-04-05 21:31:24
【问题描述】:
如果我有一个运行 Python 循环的函数:
def read_progress():
while True:
with open('progress.txt', 'r') as f:
lines = f.readlines()
time = lines[-5].split('=')[-1].split('.')[0]
time.sleep(1)
如果是这种情况,我如何检查time 是否与上次相同并跳出循环(或使函数不执行任何操作)?
我在想这样的事情:
def read_progress():
previous_time = '00:00:00'
while True:
if previous_time == time:
break
with open('progress.txt', 'r') as f:
lines = f.readlines()
time = lines[-5].split('=')[-1].split('.')[0]
time.sleep(1)
previous_time = time
但是if previous_time == time 不会总是正确的,因为我让previous_time 等于time?我觉得这样的事情很难理解,所以如果有人可以编辑错误的代码,我将不胜感激,这样我就可以实现我想要的:)
【问题讨论】:
-
听起来你需要第二个变量来存储 time_previous 或者让 time 变量存储一个元组,其中一个是当前的,另一个是前一个。需要将以前的时间存储在某个地方以便进行比较。
-
不要将变量命名为
time,因为它会影响内置;time.sleep(1)将失败。 -
@Mike 我已经编辑了问题以展示我的想法,但由于我给出的原因,我认为它不会起作用。发现很难理解如何做到这一点。如果你能写出能让我实现这一目标的代码,我将不胜感激:)
-
您的想法可行,但
if语句需要位于将time设置为新内容的行之后,以及设置previous_time = time的行之前 -
@Stuart 这很有道理!谢谢斯图尔特。
标签: python python-3.x loops while-loop