2017-10-16 71 views
-1

我试图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) 
    data=list(data) 
    text=data[0][0] 
    print(text) 

    print row_count 

回答

1

您不能只从文件读取两次。 sum(1 for row in data)已经读取了所有数据,所以data = list(data)是一个空列表,因为文件指针位于文件末尾,除非将文件倒回到开始位置,否则不会返回更多数据。

你甚至不需要使用sum()调用,将其删除。你可以用len(data)相同的计数,你使用它list()后:

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) 
+0

感谢您的详细回答,就是反正我可以用它来计算行数第一,然后读取单元格的值?如何倒带文件?谢谢 – panda001

+0

@ panda001:你为什么需要先做这件事?读取文件数据两次*速度慢,效率低。 –

+0

@ panda001:'csvfile.seek(0)'会追溯到开始。 –