2013-06-20 20 views
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 

我做錯了什麼?

回答

3

那麼,因爲閱讀器是一個空列表,所以你的for循環永遠不會執行。因此,line[999]未被執行。這就是爲什麼沒有拋出異常的原因。

至於其他代碼,由於您訪問了空列表的0th索引,所以拋出異常。嘗試訪問reader[0]並查看您是否得到例外。

+0

謝謝你的回答。 – atman

1

這裏的問題是你的文件是空的 - 這意味着你的for循環不會執行。

+0

謝謝你的回答。 – atman

相關問題