2014-10-31 56 views
0

我正在制作一个python应用程序,我想从网上读取一个文件。 这是我使用读它的代码:Python - urllib2>如何转义HTTP错误

urllib2.urlopen("http://example.com/check.txt").read() 

一切都很正常,但是当我将它指向一个网址不存在的,它给了HTTP 404:未找到错误,这是正常的。

问题是,该应用程序被设计为在Windows上工作,因此,它将被编译。 在Windows上,当应用程序试图从不存在的url中获取文件时,该应用程序将压缩并给出错误窗口+它会创建一个包含HTTP 404的日志:未找到错误。

我试图逃避这个错误,但我失败了。这是完整的代码:

import urllib2 

file = urllib2.urlopen("http://example.com/check.txt") 

try: 
    file.read() 
except urllib2.URLError: 
    print "File Not Found" 

else: 
    print "File is found" 

请,如果你知道如何逃避这个错误,帮帮我。

+0

上'了urllib.urlopen(...)'出现的错误(这是* *之外的'try')** **不上'file.read()' (永远不会到达)。 – jonrsharpe 2014-10-31 19:23:07

+0

把'urllib2.urlopen(...)'里面试试 – Hackaholic 2014-10-31 19:25:32

+0

谢谢兄弟们的帮忙。我现在可以通过尝试@karthikr提供的解决方案来解决此问题。 – 2014-10-31 19:45:41

回答

0

您应该在urlopen周围应用try..except,而不是读取。

试试这个

import urllib2 
try: 
    fh = urllib2.urlopen('http://example.com/check.txt') 
    print fh.read() 
except urllib2.HTTPError, e: 
    print e.code 
except urllib2.URLError, e: 
    print e.code 
+0

谢谢布罗。你的解决方案完美无缺 – 2014-10-31 19:43:46