1

私がしようとしているのは、Python を使用して Google Custom Search API を介して画像をダウンロードすることです。これは初めてのことですが、Python で例外をキャッチする際に平凡なエラーが発生している可能性があります。

10054 Connection Reset By Peer ではないエラーが発生した場合でも、すべて正常に動作します。コードは次のようなものです。役に立たない部分を取り除いただけです。

try: 
    urllib.request.urlretrieve(myUrl['link'],str(count)+'.jpg')
except URLError as e:
    print(e.reason)

接続がピアによってリセットされ、コンソールにこのエラーが表示されることがあります。

urllib.request.urlretrieve(myUrl['link'],str(count)+'.jpg')
File "C:\Python33\lib\urllib\request.py", line 210, in urlretrieve
   block = fp.read(bs)
File "C:\Python33\lib\http\client.py", line 503, in read
   return super(HTTPResponse, self).read(amt)
File "C:\Python33\lib\http\client.py", line 542, in readinto
   n = self.fp.readinto(b)
File "C:\Python33\lib\socket.py", line 297, in readinto
   return  self._sock.recv_into(b)
   ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
   Press any key to continue . . .

今はその URL を機能させることにあまり関心がありませんが、ループを停止せずに継続したいだけです。どうすればその例外をキャッチできますか?

編集:

また、コードがエラーを正しくキャッチし、ループを停止せずにprint(e.reason)正しく出力する場合があることにも気付きました。[WinError 10054]それは非常に奇妙です。

4

1 に答える 1

1

正確な問題がわからない場合は、次のようにすべての例外をキャッチできます。

try: 
    urllib.request.urlretrieve(myUrl['link'],str(count)+'.jpg')
except URLError as e:
    print(e.reason)
except KeyboardInterrupt as ki:
    raise ki
except:
    print("Unknown Error")
于 2013-07-03T15:53:59.333 に答える