2013-03-27 56 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=" ") 
相关问题