2012-05-03 1 views
2

私はPythonを使ってWebからファイルをダウンロードする方法を知っていますが、要求されているファイルが存在しない場合を扱いたいと思います。その場合は、エラーメッセージ( "404:File not found")を表示し、ディスクに何も書き込まないようにします。しかし、私はまだプログラムを実行し続けることができる(すなわち、存在する可能性があるリスト内の他のファイルをダウンロードする)ことができるようにしたい。Python:urllibを使って存在しないファイルをダウンロードする際に例外を渡す

どうすればよいですか?以下は、URLを指定してファイルをダウンロードするためのテンプレートコードです(もっと良い方法があると思ったら自由に変更できますが、簡潔かつ簡潔にしてください)。

import urllib 
urllib.urlretrieve ("http://www.example.com/myfile.mp3", "myfile.mp3") 

答えて

0
from urllib2 import URLError 

try: 
    # your file request code here 
except URLError, e: 
    if e.code == 404: 
     # your appropriate code here 
    else: 
     # raise maybe? 

私は特定のsection about handling exceptionsを持ってthisガイドを、続いて、それは本当に役に立ちました。

-1

あなたのコードは次のようになります。

try: 
    urllib.urlretrieve ("http://www.example.com/myfile.mp3", "myfile.mp3") 
except URLError,e: 
    if e.code==404: 
     print 'file not found. moving on...' 
     pass 
+2

を試してみてください。ドメインが悪い場合、IOErrorが発生します。さもなければ 'myfile.mp3'はhtml 404応答を含んでいます。 – johncip

-1
import urllib, urllib2 
try: 
    urllib.urlretrieve ("http://www.example.com/", "myfile.mp3") 
except URLError, e: 
    if e.code == 404: 
     print "4 0 4" 
    else: 
     print "%s" % e 

これはあなたのコードが何をするかです。基本的にwww.example.comのWebページを取得してmyfile.mp3に書き込みます。それはmyfile.mp3を探していないので例外に終わるわけではありません。基本的にhtmlのすべてをmyfile.mp3に書き出します。

ウェブ上の特定の場所でファイルをダウンロードするコードを探しているなら、 urllib.urlretrieveは404応答にURLErrorは発生しません、私が言うことができるものから、この

How do I download a zip file in python using urllib2?

+1

エラーをキャッチできません – timger

関連する問題