【问题标题】:Issue reading csv file读取 csv 文件的问题
【发布时间】:2015-09-30 18:52:17
【问题描述】:

我在使用 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 上的云中运行不正常

【问题讨论】:

标签: python python-2.7 csv pythonanywhere


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多