Skip to main content
 首页 » 编程设计

python之数据未传递给 for 循环中的变量

2025年05月04日13cloudgamer

我有以下代码

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

它打印:

<_csv.reader object at 0x00000295CB6933C8> 
505 

因此它将 data 打印为一个对象并将 row_count 打印为 505。只是似乎没有在 for 循环中打印 row .我不确定为什么没有任何内容传递给变量行?

这特别令人沮丧,因为如果我去掉 row_count 它就可以了!为什么?

请您参考如下方法:

data = csv.reader(csvfile, delimiter=' ') 
print(data) 
row_count = row_count = sum(1 for lines in data) 

您刚刚阅读了整个文件;你已经用尽了输入。您的第二个 for 已无任何可查找的内容。您必须重置阅读器。最明显的方法是关闭文件并重新打开。不太明显……也不太灵活……是将文件指针重置到开头,使用

csvfile.seek(0) 

这不适用于所有文件子类型,但适用于 CSV。

更好的是,在打印时简单地计算行数:

以 open('data.csv') 作为 csv 文件: data = csv.reader(csvfile, delimiter=' ')

row_count = 0 
for row in data: 
    print(row) 
    row_count += 1 
 
print(row_count)