使用和不使用 readlines() 方法打印文件内容

Printing contents of a file with and without using readlines() method

我已经开始学习 python 并遇到了以下打印文件内容的代码:

with open('Example2.txt','r') as readfile:
     for line in readfile:
          print(line)

输出如下:

This is line A

This is line B

This is line C

This is line D

源if资料说for循环逐行取输入然后打印,但据我所知(如有错误请指正),变量readfile 包含一个字符串,那么为什么循环是 运行 多次呢?它必须一次打印文件的内容。

此外,这是我认为逐行读取文件的正确代码,它也打印相同的输出。那么之前的代码和这段代码有什么区别呢?

with open('Example2.txt','r') as readfile:
     for line in readfile.readlines():
          print(line)

实际上,readfile变量是一个文件对象,它有一个__iter__方法,其中__iter__的每个索引对应于文件中的一行。有关详细信息,请查看此类似问题:Reading files in Python with for loop

可以找到实际的类型定义here and it inherits from BufferedIOBase, which in turn inherits from IOBase,其中定义了readlines方法

这两个代码片段的区别在于,在第一个代码片段中,您依赖于 TextIOWrapper 的实现,它本质上是语法糖,为您调用 readlines,而在第二个中,您明确地进行了调用。