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)

只有当我取消注释第二个文件句柄时,第二个循环才会打印文件。
这是为什么?
如果没有第二个,它不应该工作吗?

4

5 回答 5

1

因为您需要使用以下方法返回文件的开头:

ifh.seek(0)

当您open再次读取文件时,它将文件的当前位置重置为开头。

于 2013-03-27T07:06:00.603 回答
1

这是因为在第一个循环完成后,ifh的当前位置在文件末尾。那时,没有更多数据要读取。

要再次读取数据,您需要使用ifh.seek(0)移回文件的开头。

于 2013-03-27T07:06:14.953 回答
0

当您打印时,您位于文件的末尾Done。你可以做一个ifh.seek(0)重新开始。

于 2013-03-27T07:06:17.290 回答
0

做:ifh.seek(0)在第二个循环之前。

这是因为您从文件中读取了所有行,并且seek方法转到文件的第一个字节,并且您可以再次读取它。

于 2013-03-27T07:07:22.580 回答
0

您还可以在 for 循环之前创建一个闭环。

while True:
    for line in ifh:
        print(line,end=" ")
于 2013-03-27T07:14:47.667 回答