csv列表索引超出范围-python
我试图获取csv文件中的特定单元格值并计算行数,但若在读取特定单元格之前计算行数,则会出现错误 我的代码是:csv列表索引超出范围-python,python,csv,Python,Csv,我试图获取csv文件中的特定单元格值并计算行数,但若在读取特定单元格之前计算行数,则会出现错误 我的代码是: import os import sys import csv with open('C:\Users\Administrator\Desktop\python test\update_test\datalog.csv','rb') as csvfile: data= csv.reader(csvfile) row_count=sum(1 for row in data
import os
import sys
import csv
with open('C:\Users\Administrator\Desktop\python test\update_test\datalog.csv','rb') as csvfile:
data= csv.reader(csvfile)
row_count=sum(1 for row in data)
data=list(data)
text=data[0][0]
print(text)
print row_count
你不能只从文件中读取两次
sum(数据中的行为1)
已经读取了所有数据,因此data=list(data)
是一个空列表,因为文件指针位于文件的末尾,除非将文件倒回起始位置,否则不会返回更多数据
您甚至不需要使用sum()
调用,将其删除。使用list()
后,您可以使用len(数据)
获得相同的计数:
with open('C:\Users\Administrator\Desktop\python test\update_test\datalog.csv','rb') as csvfile:
data= csv.reader(csvfile)
data = list(data)
text = data[0][0]
print(text)
print len(data)
谢谢你的详细回答,不管怎样,我可以先计算行数,然后读取单元格值吗?如何倒带文件??thanks@panda001:你为什么要先这么做?读取文件数据两次既慢又低效。@panda001:
csvfile.seek(0)
将返回到开始。感谢Martijin,我需要稍后执行for循环以将单元格值发送到数据库,因此我需要知道必须发送多少数据