Find number of columns in csv file
You can use itertools.tee
itertools.tee(iterable[, n=2])
Return n independent iterators from a single iterable.
eg.
reader1, reader2 = itertools.tee(csv.reader(f, delimiter=d))
columns = len(next(reader1))
del reader1
for row in reader2:
...
Note that it's important to delete the reference to reader1
when you are finished with it - otherwise tee
will have to store all the rows in memory in case you ever call next(reader1)
again
This seems to work as well:
import csv
datafilename = 'testfile.csv'
d = '\t'
f = open(datafilename,'r')
reader = csv.reader(f,delimiter=d)
ncol = len(next(reader)) # Read first line and count columns
f.seek(0) # go back to beginning of file
for row in reader:
pass #do stuff