2016-04-10 176 views
0

我想做一個while循環,每5分鐘使用time.sleep()然後繼續這個過程。但問題是我的代碼無法正常工作。我在下面使用這個代碼。我的代碼中可能存在什麼問題,我應該怎麼做才能使其工作?Python while循環條件使用時間

with open('url.txt', 'r', encoding='UTF-8', errors='ignore') as des: 
    description = des.readline() 
    timeout = time.time() + 60*5 
    while description: 
     test = 0 
     description = des.readline() 
     browser.get(description)  
     time.sleep(6) 

     if test == 5 or time.time() > timeout: 
      time.sleep(timeout) 
      continue 
+0

根據給出的代碼,test == 5永遠不會成立。時間睡眠(超時)也會睡眠time.time()+ 60 * 5秒。 –

回答

1

沒有看到所有的代碼或有更多的描述,很難確定問題是什麼。如果您希望循環在五分鐘內執行一次,您將使用time.sleep(5*60),因爲time.sleep()在幾秒鐘內運行,而不是幾分鐘。而且,if test == 5永遠不會成立,因爲您在循環中設置了test = 0,因此永遠不要更改它。如果descriptionFalse,那麼while循環將永遠不會執行。確保description爲真,並且您更改test變量或將其從if語句中刪除。它也看起來像重複行description = des.readline(),應該不會改變。

+1

我認爲這應該是一個評論,而不是一個答案。 –

+0

帶有'description'的邏輯實際上是一個很好的邏輯,因爲如果文件中沒有東西要讀取,那麼'while'語句將不會執行任何操作。 – KeyWeeUsr

1

我想這是因爲你的time.sleep(timeout)行。

它基本上意味着 - seconds from epoch + 5分鐘暫停,因此它只運行一次,然後運行幾乎像time.sleep(infinity) - 至少對於您的機器。

它睡得很好..很長一段時間。

而且,test變量將永遠不會是==5,因爲您沒有增加它。移動while之外的變量和browser.get(description)之後的變量test += 1。而在第二行是一個錯字,如果我是對的,它應該是des.readlines()