Это потому, что в следующей строке — row_count = sum(1 for row in data)
— вы уже прочитали файл, и он достиг своего конца. Так что, когда вы снова попытаетесь сделать -
for row in data:
print r
Это не сработает, потому что файл data
находится в конце.
Одна из многих вещей, которые вы можете попробовать, — это снова открыть файл, чтобы прочитать его с самого начала.
Пример -
import csv
with open('blah.csv','rb') as csvfile:
data = csv.reader( csvfile )
row_count = sum(1 for row in data)
print row_count
with open('blah.csv','rb') as csvfile:
data = csv.reader( csvfile )
r = 1
for row in data:
print r
Хотя вы также можете сделать как подсчет строк, так и печать строки в один цикл, например -
import csv
with open('blah.csv','rb') as csvfile:
data = csv.reader( csvfile )
row_count = 0
for row in data
row_count += 1
print row
print row_count
Еще одна вещь, которую вы можете сделать, это -
csvfile.seek(0) #to make the file point to the start.
Пример -
import csv
with open('blah.csv','rb') as csvfile:
data = csv.reader( csvfile )
row_count = sum(1 for row in data)
print row_count
csvfile.seek(0)
r = 1
for row in data:
print r
person
Anand S Kumar
schedule
12.07.2015
row_count = len(data)
будет аккуратнее? - person hwjp   schedule 13.07.2015