2013-10-02 124 views
0
def main(): 
    x = open("textfile.txt", "r") 
    #o = enumerate(x.readlines()) 

    for i in x: 
     print(i, end="") 



    x.close 
if __name__ == "__main__": main() 

如果我取消了「O」反對該腳本將不會運行。 有人可以告訴我爲什麼是這樣嗎? :python3.3'枚舉'函數中斷循環? python3

回答

0

你的意思是你沒有得到的輸出,對不對?

這是因爲x.readlines()不是一個生成器 - 它實際上讀取x中的所有數據。然後把它提供給o,用一個枚舉器包裝。

所以當你在X爲我做 :

有要讀取的沒有更多的數據 - 無關。

你可以這樣做: 對於我,文本○: 打印 '%d:%s' 的%(I,文本)

這將工作...

+0

但我不改變for循環,當我刪除評論,即時通訊仍然閱讀對象'x',我不打電話或涉及'o'但沒有輸出,它是如何影響我的代碼?對不起,我是一個noob :) – user2817436

+0

因此,readlines將讀取文件中的行直到EOF。 'for i in x'也具有相同的行爲 - 整個文件中的迭代器在每次調用之前都會讀取一行,直到EOF。如果你做枚舉(x.readlines()),它的readlines()部分將讀取所有的數據併到達EOF。那麼你會'爲我在X',但X已經在EOF,所以實際上不會去任何地方。您需要重置該文件(關閉/重新打開,或者執行x.seek(0)將其返回到文件的開頭,然後它將起作用。 –