#python
Вопрос:
Я написал очень простую программу, которая должна была прочитать CSV и распечатать все строки дважды. Однако, когда я запустил программу, она напечатала все строки в первый раз и ничего во второй раз.
Код:
import csv
csvfile = csv.reader(open(<path>, 'rb'))
print 'Attempt 1'
for row in csvfile:
print row
print 'Attempt 2'
for row in csvfile:
print row
Выход:
Attempt 1
['a', 'b', 'c']
['d', 'e', 'f']
Attempt 2
Почему код не печатает содержимое снова во второй раз?
Ответ №1:
Вам нужно rewind
открыть файл:
import csv
csvfile = csv.reader(open(<path>, 'rb'))
print 'Attempt 1'
for row in csvfile:
print row
csvfile.seek(0, 0)
print 'Attempt 2'
for row in csvfile:
print row
Таким образом, это должно работать нормально.
Ответ №2:
Поправьте меня, если я ошибаюсь, но я почти уверен csvfile
, что переменная, которую вы создаете, является объектом генератора.
Генераторы не хранятся в памяти, а могут быть повторены только один раз!
Надеюсь, это поможет, Люк