2017-11-03 18 views
0

私はラズベリーに非常に小さくて単純なpythonスクリプトを持っていますが、アクティブなWi-Fi接続がある限り、うまく動作します。ラズベリーはモバイルホットスポットに接続されており、範囲外になる可能性があるため、接続が失われる可能性があります。これが起こるとすぐに、例外がスローされ、リクエスト "while"ループが終了します。例外で再試行urllibリクエスト

私は、このスクリプトを一時停止するか、接続を復元するとすぐにループに戻ってくるように例外を「無視する」ことができるかについて、より多くの情報を得たいと考えていました。

import urllib 
    import serial 
    from time import sleep 

    link = "http://myurl/" 
    while True: 
     f = urllib.urlopen(link) 
     myfile = f.read() 
     print myfile 
     ser = serial.Serial('/dev/ttyUSB0', 9600) 
     ser.write(myfile) 
     sleep(3) 
+0

を使用すると、この行があることを知っている場合: '= urllib.urlopen(リンク)は、F'例外を生成することが、あなたは試す 'でそれをラップすることができます。.. .except ... 'を実行し、あなたが望むようにそれを処理します。 – alfasin

+0

' try'/'except'、例外では' pass'です。 – roganjosh

答えて

0

(明らかに)tryという文を試すことができます。

whileループの中でtry: exceptブロックを使用すると、コードが実行されなくても(あなたのPiが接続を失ったり、奇妙なことが起こったとしても)、プログラムを終了しないようにすることができます。

この種のコードは次のようになります。

import urllib 
import serial 
from time import sleep 

link = "http://myurl/" 
while True: 
    try: 
     f = urllib.urlopen(link) 
     myfile = f.read() 
     print myfile 
     ser = serial.Serial('/dev/ttyUSB0', 9600) 
     ser.write(myfile) 
     sleep(3) 
    except: 
     sleep(3) #If the code executed in the try part fails, then your program will simply sleep off 3 seconds before trying again! 
+0

ありがとう、私はこれらの例外ルールをたくさん検索しましたが、使用することができるシンプルさは見たことがありません。これは魅力のように機能します! – Rogier

関連する問題