2015-07-12 151 views
4

我无法读出保存的CSV与Python:问题阅读csv文件

import csv 


with open('blah.csv','rb') as csvfile: 
    data = csv.reader(csvfile) 
    row_count = sum(1 for row in data) 
    print row_count 


    r = 1 
    for row in data: 
     print r 

我的问题是,尽管蟒蛇似乎认识到该文件,并认识到ROW_COUNT = 9(并打印此),它不”在后面的循环中为每一行打印r。

此代码正常运行我的电脑上,而不是在云上www.pythonanywhere.com

+3

可能的副本http://stackoverflow.com/questions/11150155/why-cant-i-repeat-the-for-loop-for-csv-reader-python – pvg

+0

顺便说一句,会'row_count = len(data )'更整洁? – hwjp

回答

4

这是因为在以下行 - 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