2013-03-27 27 views
2

我被玩弄的文件與Python,所以我寫了這一點:爲什麼我需要使另一個文件句柄再次讀取同一個文件?

ifh=open('2.txt','r') 
    for line in ifh: 
    print(line,end="") 
print("Done") 
#ifh=open('2.txt','r') 
    for line in ifh: 
     print(line) 

第二循環就只打印如果我取消對第二文件句柄的文件。
這是爲什麼?
不應該沒有第二個工作?

回答

1

這是因爲,第一循環結束後,ifh目前的位置是在文件的結尾。那時,沒有更多數據要讀取。

再次讀取數據,你需要使用ifh.seek(0)搬回到文件的開頭。

+0

非常感謝 – Sam 2013-03-27 07:40:00

1

因爲你需要seek回使用該文件的開頭:

ifh.seek(0) 

當你open文件再次閱讀,它重置該文件的當前位置開始。

+0

幹得好! 非常感謝。 – Sam 2013-03-27 07:39:07

0

您是在文件的結尾,當您打印Done。你可以做一個ifh.seek(0)重新開始。

0

Do:ifh.seek(0)第二次循環之前。

它,因爲你從文件中讀取所有行和seek方法進入文件的第一個字節,你可以再次閱讀。

0

您也可以在for循環之前創建一個閉環。

while True: 
    for line in ifh: 
     print(line,end=" ") 
相關問題