Cómo traducir este código de Python 2.7 a Python 3.5 para corregir -> AttributeError: el objeto ‘_io.TextIOWrapper’ no tiene atributo ‘next’

Estoy usando Python 3.5, pero este libro enseña 2.7 (me gana por qué en 2016)

Aprendizaje de análisis predictivo con Python por Ashish Kumar 15 de febrero de 2016

>>> data=open(filename,'r') >>> cols=data.next().strip().split(',') Traceback (most recent call last): File "", line 1, in  cols=data.next().strip().split(',') AttributeError: '_io.TextIOWrapper' object has no attribute 'next' >>> 

He leído este atributo AttributeError: ‘_io.TextIOWrapper’ no tiene el atributo ‘siguiente’ de python y aún no sé cómo hacer que funcione en el shell GUI de Python 3.5.

Hasta ahora, entiendo que para Python 3.5 tengo que usar .__next__ ; para Python 2.7 .next .

Utilice la función next() en los iteradores:

 cols = next(data).strip().split(',') 

Esto es compatible en todas las versiones de Python.

De hecho, podría cambiar .next() por .__next__() , pero es mejor usar la función estándar aquí, tal como usaría len(obj) lugar de llamar a obj.__len__() . Los métodos de subrayado doble son enlaces que utiliza Python; su código debe usar las API estándar que pueden o no llamar a esos enlaces. Esto es especialmente cierto aquí, donde el nombre del gancho cambió.