python - Loop over rows of csv.DictReader more than once -


i open file , read csv.dictreader. iterate on twice, second time nothing printed. why this, , how can make work?

with open('myspreadsheet.csv', 'ru') wb:     reader = csv.dictreader(wb, dialect=csv.excel)     row in reader:         print row      row in reader:         print 'xxxxx'  # xxxxx not printed 

you read entire file first time iterated, there nothing left read second time. since don't appear using csv data second time, simpler count number of rows , iterate on range second time.

import csv itertools import count  open('myspreadsheet.csv', 'ru') f:     reader = csv.dictreader(f, dialect=csv.excel)     row_count = count(1)      row in reader:         next(count)         print(row)  in range(row_count):     print('stack overflow') 

if need iterate on raw csv data again, it's simple open file again. likely, should iterating on data stored first time, rather reading file again.

with open('myspreadsheet.csv', 'ru') f:     reader = csv.dictreader(f, dialect=csv.excel)      row in reader:         print(row)  open('myspreadsheet.csv', 'ru') f:     reader = csv.dictreader(f, dialect=csv.excel)      row in reader:         print('stack overflow') 

if don't want open file again, can seek beginning, skip header, , iterate again.

with open('myspreadsheet.csv', 'ru') f:     reader = csv.dictreader(f, dialect=csv.excel)      row in reader:         print(row)      f.seek(0)     next(reader)      row in reader:         print('stack overflow') 

Comments