我有一个链接到json文件的链接列表。其中一些是空白的或带有一些错误,当我尝试加载它们时失败
data = urllib2.urlopen(www.whatever.co.uk).read()
data = json.loads(data)
我需要的是创建一个" good"链接。我在考虑创建一个for循环:
links = []
for i in urls:
try:
data = urllib2.urlopen(str(i)).read()
data = json.loads(data)
links.append(url)
except:
raise
但我收到此错误
ValueError: No JSON object could be decoded
我确信很多链接都很好,因为我单独尝试过它们。如何排除这些有缺陷的链接?感谢
答案 0 :(得分:1)
你正在提出内部异常。如果你想忽略它,用pass代替raise。像这样:
bluez
对于较大的应用程序,这是一种不好的做法,因为您不会看到您遇到的错误。如果您有太多错误,请考虑记录错误并继续,或计算错误并在最后生成一个例外。
答案 1 :(得分:1)
如果您调用raise,那么您的脚本将引发错误并停止执行。
在这种情况下我更喜欢try-except-else
,它看起来更具可读性
good_links = []
bad_links = []
for i in urls:
try:
data = urllib2.urlopen(str(i)).read()
data = json.loads(data)
except Exception:
bad_links.append(url) # corrupted url or json data.
else:
good_links.append(url)
以上示例将错误链接放到单独的列表中,但如果您不需要,则只需使用pass
代替bad_links.append(url)
答案 2 :(得分:0)
正确的形式是:
links = []
for i in urls:
try:
data = urllib2.urlopen(str(i)).read()
data = json.loads(data)
links.append(url)
except:
pass