使用for循环在Python中读取文件

时间:2017-05-24 20:54:48

标签: python

要在Python中读取文件,必须首先打开该文件,然后需要read()函数。为什么当我们使用for循环来读取文件的行时,是否需要read()函数?

filename = 'pi_digits.txt'
with open(filename,) as file_object:
    for line in file_object:
        print(line)

我已经习惯了下面的代码,显示了read要求。

for line in file_object.read():

3 个答案:

答案 0 :(得分:2)

这是因为file_object类内置了一个“iter”方法,该方法说明了文件如何与迭代语句交互,如for循环。

换句话说,当你说for line in file_object时,文件对象引用了它的__iter__方法,并返回一个列表,其中每个索引都包含一行文件。

答案 1 :(得分:0)

open语句中的with命令隐式处理读取。它创建了一个生成器,一次生成一个记录文件(read隐藏在生成器中)。对于文本文件,每行是一条记录。

请注意,第二个示例中的read命令将整个文件读入字符串;这比一次一行的例子消耗更多的内存。

答案 2 :(得分:0)

Python文件对象在迭代它们时定义了特殊行为,在这种情况下使用for循环。每当你点击循环顶部时,它都会隐式调用readline()。这就是它的全部内容。

请注意,您“习惯”的代码实际上会逐个字符地迭代,而不是逐行迭代!那是因为你将遍历一个字符串(read()的结果),当Python迭代字符串时,它逐字逐句。