2014-10-19 69 views
1

我想检查一个JPG的URL是否是真实的。此代码的工作,如果JPG存在,则返回True如何捕捉Python中的任何套接字错误?

import httplib 

def exists(site, path): 

    conn = httplib.HTTPConnection(site) 
    conn.request('HEAD', path) 
    response = conn.getresponse() 
    conn.close() 
    return response.status == 200 

print exists('uploads1.wikiart.org', 
      '/images/vincent-van-gogh/vincent-s-bedroom-in-arles-1889.jpg') 

但是,如果我把它发送到不存在的网址,像'uploads1111.wikiart.org',我得到一个套接字错误,说:

socket.error: [Errno 10060] A connection attempt failed 
because the connected party did not properly respond after a period of time 

我搜索了一个答案,发现与errno模块有关,但无法将该代码成功应用于我自己。我试图捕获任何套接字错误,并返回False,如果有的话。

+1

为什么你就不能赶上'socket.error'? – 2014-10-19 16:15:31

+0

谢谢,那很容易。 – 2014-10-19 16:37:34

回答

1

回答我自己的问题:

import httplib 
import socket 


def exists(site, path): 

    try: 
     conn = httplib.HTTPConnection(site) 
     conn.request('HEAD', path) 
     response = conn.getresponse() 
     conn.close() 
     return response.status == 200 

    except socket.error: 
     return False