我有以下程序,我认为从文件中读取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)
答案 0 :(得分:3)
您可以通过iter(file)
轻松自行测试。如果可以为它做一个迭代器(try iter("abc")
),则返回对象上的迭代器,否则抛出异常。在打开文件对象的情况下,它将返回您传入的完全相同的对象,因为它已经是迭代器。
或者您可以查看the documentation。扰流器:
IOBase(及其子类)支持迭代器协议,这意味着可以迭代IOBase对象,从而产生流中的行。