Python 时间条件 while 循环



我需要每 10 秒从文件中读取一个变量,直到这个变量 var != "0"此时我想停止循环。

所以我正在尝试用time.sleep做一个 while 循环来检查文件,但我无法在循环外修改var因为它只在 while 循环内发生变化:

while var == "0":
    file =open("/net/live.txt", "r")
    var = file.read()
    file.close()    
    if var == "0":
        time.sleep(10)  #wait 10 seconds and query again        
    else:
        file2 =open("/net/live2.txt", "w")
        file2.write(var)
        file2.close()
        time.sleep(10)
        print var       #var is unequal "0" so stop while loop

如果你在Unix上,你可以使用信号模块:

import signal, sys
# your function as signal handler
def handler(signum, frame):
    with open("/net/live.txt", "r") as file
        var = file.read()
        file.close()    
    if var != '0':
        with open("/net/live2.txt", "w") as file2
            file2.write(var)
            file2.close()
            print var
# install handler
signal.signal(signal.SIGALRM, handler)
# emit SIGALRM after 10 secs
signal.setitimer(signal.ITIMER_REAL, 10)
# do other stuff
i = 1
while True:
    if i % 100000 == 0:
        print i
    i += 1

这应该可以满足您的期望。 您可以在此处阅读有关信号的更多信息:https://docs.python.org/2/library/signal.html

Windows

用户将不得不使用Windows本身中的现有库之一,即多媒体库提供定时函数,如果找到来自其他开发人员的实现,则在此处

最新更新