2016-07-28 4 views
2

Beim Lesen von Dateien mit dem Modul csv gibt es zwei Möglichkeiten zum Iterieren des von csv.reader zurückgegebenen Generators.Python csv reader.next() vs next (reader)

with open('foo.csv') as f: 
    reader = csv.reader(f) 
    row1 = reader.next() 
    row2 = next(reader) 

Gibt es einen Unterschied zwischen dem, wie row1 und row2 erhalten werden? Wird einer dem anderen vorgezogen?

Antwort

2

Am Anfang war die einzige Möglichkeit, iterator.next() auf einem Iterator iterator aufzurufen. Python 2.6 führte den eingebauten next(iterator) ein, der einfach unter der Haube iterator.next() genannt wurde. In Python 3, next(iterator) ruft iterator.__next__(), und iterator.next() löst eine AttributeError. Wenn Sie also keine wirklich alte Version von Python verwenden (in diesem Fall sollten Sie trotzdem ein Upgrade durchführen), verwenden Sie den Built-in.