2016-04-10 5 views
0

私はtime.sleep()を使用するwhileループを作成して5分ごとに処理を続けます。しかし、問題は私のコードが正しく動作していないことです。私はこのコードを以下に使っています。私のコードで何が問題になりうるのですか?時間を使用している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.sleep(タイムアウト)はtime.time()+ 60 * 5秒間スリープします。 –

答えて

1

あなたのコードをすべて見たり、説明を追加したりすることなく、問題の原因を特定することは困難です。ループが5分以上実行されるようにする場合は、time.sleep()が分ではなく機能するため、time.sleep(5*60)を使用します。また、ループ内にtest = 0を設定してから変更しないため、if test == 5は決して真ではありません。 descriptionFalseの場合、whileループは実行されません。 descriptionがtrueで、test変数を変更するか、またはifステートメントから変数を削除することを確認してください。また、全く変更してはならないdescription = des.readline()行を繰り返すように見えます。

+1

これはコメントでなければならないと思います。 –

+0

'description'のロジックは実際には良いものです。なぜなら、ファイルに何も読み込まれていなければ、' while'ステートメントでは何も実行されないからです。 – KeyWeeUsr

1

あなたのtime.sleep(timeout)行のためだと思います。

これは基本的にはseconds from epoch + 5分間の休止を意味するため、1回だけ実行され、その後は少なくともお使いのマシンではtime.sleep(infinity)のようなものがほとんど実行されます。

長い間、よく眠っています。

また、test変数は、増分していないため、==5になることはありません。変数をwhileの外に移動し、browser.get(description)の後にtest += 1と入力します。 2行目にはタイプミスがありますが、それが正しい場合はdes.readlines()になります。