在python中一次读取一行文件

时间:2017-03-13 21:22:38

标签: python

我有以下程序,我认为从文件中读取one line at at time并将其记录到文件中。它不会将整个文件读入内存。这是我的理解。下面的代码中是否隐含了一些python生成器对象?文件句柄的类型为<class '_io.TextIOWrapper'>。它是否也实现了生成器接口?

import logging

logging.basicConfig(filename='debug.log', level=logging.DEBUG)


if __name__ == "__main__":
    path = "TB_data_dictionary_2016-04-15.csv"
    with open(path) as file:
        print(type(file))
        for line in file:
            logging.debug(line)

1 个答案:

答案 0 :(得分:3)

您可以通过iter(file)轻松自行测试。如果可以为它做一个迭代器(try iter("abc")),则返回对象上的迭代器,否则抛出异常。在打开文件对象的情况下,它将返回您传入的完全相同的对象,因为它已经是迭代器。

或者您可以查看the documentation。扰流器:

  

IOBase(及其子类)支持迭代器协议,这意味着可以迭代IOBase对象,从而产生流中的行。