Можно ли сбросить итераторы в Python? - PullRequest
105 голосов
/ 16 июля 2010

Могу ли я сбросить итератор / генератор в Python?Я использую DictReader и хотел бы сбросить его (из модуля csv) в начало файла.

Ответы [ 13 ]

0 голосов
/ 20 мая 2015

list(generator()) возвращает все оставшиеся значения для генератора и эффективно сбрасывает его, если он не зациклен.

0 голосов
/ 19 сентября 2013

Для DictReader:

f = open(filename, "rb")
d = csv.DictReader(f, delimiter=",")

f.seek(0)
d.__init__(f, delimiter=",")

Для DictWriter:

f = open(filename, "rb+")
d = csv.DictWriter(f, fieldnames=fields, delimiter=",")

f.seek(0)
f.truncate(0)
d.__init__(f, fieldnames=fields, delimiter=",")
d.writeheader()
f.flush()
0 голосов
/ 16 июля 2010

Только если базовый тип обеспечивает механизм для этого (например, fp.seek(0)).

...