2016-04-05 21 views
2

Python 3.5 kullanıyorum ama bu kitap 2.7 öğretiyor (bana neden yener hiçbir özelliği vardır 2016)düzeltmek için Python 3.5 Python 2.7 den bu kodu nasıl çevrilir? ---> AttributeError: '_io.TextIOWrapper' nesne 'gelecek'

okudum 2016

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

Ashish Kumar Feb 15 tarafından Python ile

Öğrenme Tahmini Analytics, bu AttributeError: '_io.TextIOWrapper' object has no attribute 'next' python ve hala Python 3.5 GUI kabuğunda çalışmak için nasıl bilmiyorum .

Şu ana kadar Python ben .__next__ kullanmak zorunda 3,5 anlamak; Python 2.7 için .next.

cevap

7

Kullanım Yineleyicilerin üzerinde next()function:

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

Bu Python sürümlerinde uyumludur. yerine obj.__len__() çağıran len(obj) kullandığınız gibi,

, Sen gerçekten .__next__() için .next() takas olabilir, ama burada standart işlevini kullanmak daha iyidir. Çift alt çizgi yöntemleri, Python tarafından kullanılan kancaları olup, kodunuz bu kancaları arayabilecek veya aramayabilecek standart API'ları kullanmalıdır. Bu, kanca adı değiştiğinde burada özellikle geçerlidir. Buna ek olarak

+0

, API çağrıları ('__next __()') gibi altta yatan yöntemler değiştirilir bile çalışmayı garanti edilir. –

+0

Bir milyon teşekkürler. İşe yarıyor . Martin. Hiç uyumaz mısın? Acaba @goughgough :) – goughgough

+0

, ben elektrik koyun hayal olur? –

İlgili konular