读取CSV文件出现问题

4
我遇到了使用 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

我的问题是,尽管Python似乎能够识别文件并识别row_count = 9(并打印此内容),但它在后面的循环中没有为每一行打印r。
这段代码在我的电脑上可以正确运行,但在www.pythonanywhere.com上的云端上无法正常运行。

3
可能是一个重复的问题:https://dev59.com/hmgu5IYBdhLWcg3wso6j - pvg
顺便问一下,row_count = len(data) 会更整洁吗? - hwjp
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接