【问题标题】:How come i need to make another file handle to read the same file again?为什么我需要制作另一个文件句柄才能再次读取同一个文件?
【发布时间】:2013-03-27 07:04:07
【问题描述】:

我在用 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)

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

【问题讨论】:

    标签: python file-io python-3.x


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      因为你需要使用这个seek回到文件的开头:

      ifh.seek(0)
      

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:

            你也可以在for循环之前做一个闭环。

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-05-19
              • 2023-01-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-05-18
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多