2010-11-16 56 views

回答

4

這是因爲我笨,並且不能讀取:

如果沒有第二個參數,鄰必須是支持迭代協議(該ITER()方法)的集合的對象,或者它必須支持序列協議(該的GetItem()方法的整數參數從0開始)。如果它不支持這兩種協議,則會引發TypeError。

解決方案是提供一個空字符串哨兵。

with open("mydata.txt") as fp: 
    for line in iter(fp.readline, ''): 
     print line 
+1

+1:雖然我不會用* stupid *這個詞。 :)順便說一句,如果你解決了自己的問題,仍然鼓勵接受正確的答案(你自己的),使用左邊的勾號。 – 2010-11-16 12:25:18

+0

誰降低了這個?請解釋。 – 2010-11-16 12:26:55

+0

Space_C0wb0y,我想:「你可以接受你自己的答案在2天內」。 – 2010-11-16 12:38:17

-2

我能想到的唯一的事情是,你沒有一個名爲mydata.txt或者它是在錯誤的地方。

+0

這顯然已經成功地打開文件 - 錯誤是在第2行,而不是第1行,並說這是不是可迭代,而不是它的不開放。 – 2010-11-16 12:57:41

2

的Python file對象是可迭代的,因此沒有必要顯式調用iter()。要逐行讀取一個文件行,你可以簡單的寫:

with open("mydata.txt") as fp: 
    for line in fp: 
     print line 
+0

這不是OP問題的解決方案。 – 2010-11-16 12:26:10

+0

Space_C0wb0y,雖然它不是我實際問題的解決方案,但從現在開始,我可能永遠不會使用iter + readline組合,這要歸功於Tendayi :) – 2010-11-16 13:09:35