使用和不使用 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
,而在第二个中,您明确地进行了调用。
我已经开始学习 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
,而在第二个中,您明确地进行了调用。