1

我在提出例外时遇到困难,例如:

import csv

o = open('/home/foo/dummy.csv', 'r') # Empty file!
reader = csv.reader(o, delimiter=';')
reader = list(reader)

try:
    for line in reader:
        print line[999] # Should raise index out of range!
except Exception, e:
    print e

基本上 csv.reader 读取空文件,转换为空列表,上面的代码应该打印 IndexError。但事实并非如此。然而,下面的代码完美地提出了:

print reader[0][999]

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range

难道我做错了什么?

4

2 回答 2

3

好吧,由于reader是一个空列表,因此您的for循环永远不会执行。所以,line[999]不执行。这就是为什么没有抛出异常。

至于其他代码,抛出异常是因为您访问0th了空列表的索引。尝试访问reader[0]并查看是否有异常。

于 2013-06-20T11:43:59.050 回答
1

这里的问题是你的文件是空的——这意味着你的 for 循环永远不会执行。

于 2013-06-20T11:44:08.283 回答