2015-07-12 154 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