Python:在条件为真时,在时间间隔内重复执行操作

0 投票
2 回答
3433 浏览
提问于 2025-04-16 07:51

我想做的是这样一件事:访问一个网站上的文件,读取它的内容,然后根据内容执行一些操作,直到内容显示要退出为止。这个过程的前提是,每次访问网站之前要等x秒钟,重新检查内容。

perform = True
while(perform):
 data = urllib.urlopen('someurl')
 data = data.read()
 if(data == '0'):
  dosomething()
 elif(data == '1'):
  #1 signifies to exit the loop
  perform = False
 else:
  time.sleep(10)

但是这似乎总是无法实现。'Someurl'总是有值。有些人在谷歌上说这可能和睡眠函数有关。请帮帮我!

2 个回答

1

1) 你有没有试过检查一下从网址读取到的 data 是什么?比如,把它打印出来看看?

2) 如果数据确实是 '0' 或 '1',那么你就不会进入 else 的情况,这样 sleep() 就不会执行。这是个问题,因为这意味着你会立刻再去读取数据。数据可能不会有变化,而且网络服务器通常不喜欢你不停地请求同一个网址(它们会觉得你在试图攻击它们)。解决办法是:不要把 sleep() 放在 else 里面;把它放在和原来的 if 同一层级就行。你不需要 else 也能写出有效的代码。

3

这个:

import time
while True:
    print "fetching"
    time.sleep(10)

是一个最简单的测试案例,因为这个总是能正常运行,所以问题不可能出在 time.sleep 这个函数上。

撰写回答