5

私はPythonでurllibとurllib2を使用しており、それらを使用してURLから画像を取得しています。

次のようなものを使用します。

試す:
    buffer=urllib2.url_open(urllib2.Request(url))
    f.write(バッファ)
    f.閉じる
例外 (発生する可能性のあるエラー): #Network Errors(?)
    print "+url の取得に失敗しました
    合格

現在、通常の Web ブラウザーを介してサイトを使用しているときに、画像が読み込まれない/壊れていることがよくあります。これは、サーバーの負荷が高いか、画像が存在しないか、サーバーによって取得できなかったことが原因であると考えられます。

理由が何であれ、画像が読み込まれず、同様の状況がスクリプトの使用時に発生する可能性があります。どのようなエラーが発生するかわからないので、どのように処理すればよいですか?

urllib2,urllib ライブラリで発生する可能性のあるすべてのエラーについて、except ステートメントで言及するのはやり過ぎかもしれないので、もっと良い方法が必要だと思います。

(また、壊れたWi-Fi、到達できないサーバーなどを処理する必要がある/しなければならない場合があるため、エラーが増えることがあります)

4

3 に答える 3

5

表示される例外は、HTTPError (HTTP ステータス コード) と URLError (問題が発生する可能性のあるすべて) の 2 つだけです。HTTPError はそのサブクラスであるため、ステータス コードを気にしない場合は、URLError をキャッチすることもできます。

于 2012-07-28T00:57:15.837 に答える
2

何が起こったかの説明を印刷したいだけなら、例外そのものを印刷してください。

except Exception, e: 
    print e

例外オブジェクトのstr () メソッドは、人間が判読できるメッセージを取得します。

于 2012-07-28T01:00:26.927 に答える
1

これは、Python での例外処理に関する優れた Wiki 記事です。SilverbackNet の Answerを使用できます。または、すべてのエラーをキャッチしたい場合は、ここにすばらしいレシピがあります。また、トレースバックをログに記録し、発生した可能性のある他のエラーを見つけるのにも最適です。

import sys
try:
    buffer=urllib2.url_open(urllib2.Request(url))
    f.write(buffer)
    f.close() #you didn't have the parentheses in your sample
except: # catch *all* exceptions
    e = sys.exc_info()[0] #this returns a 3-tuple; (type, value, traceback)
    print 'Error: %s' % e
于 2012-07-28T01:17:07.020 に答える