Python 为什么我需要做另一个文件句柄来再次读取同一个文件?

Python 为什么我需要做另一个文件句柄来再次读取同一个文件?,python,file-io,python-3.x,Python,File Io,Python 3.x,我在用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) 只有在我取消注释第二个文件句柄时,第二个循环才会打印文件。 为什么会这样? 没有第二个就行了吗 因为您需要使用以下命令返回到文件的开头: ifh.se

我在用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)
只有在我取消注释第二个文件句柄时,第二个循环才会打印文件。
为什么会这样?
没有第二个就行了吗

因为您需要使用以下命令返回到文件的开头:

ifh.seek(0)

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

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


要再次读取数据,需要使用移回文件的开头。

打印
Done
时,您位于文件的末尾。您可以执行
ifh.seek(0)
重新开始。

在第二次循环之前执行:
ifh.seek(0)


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

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

while True:
    for line in ifh:
        print(line,end=" ")