2017-10-16 14 views
-1

csvファイルの特定のセル値を取得しようとしていますが、特定のセルを読み取る前に数値を数えればエラーが発生します csvリストインデックスが範囲外です - python

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

ファイルから2回読み取ることはできません。 sum(1 for row in data)はすでにすべてのデータを読み込んでいるので、ファイルポインタがファイルの最後にあり、ファイルを最初に巻き戻さない限り、データを返さないため、data = list(data)は空のリストです。

sum()コールを使用する必要もなく、削除してください。あなたがそれにlist()使用した後、あなたはlen(data)と同じカウントを取得することができます:あなたの細部の答えを

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:なぜ最初にそれをする必要がありますか?ファイルデータを2回読み出すのは遅く、非効率的です。 –

+0

@ panda001: 'csvfile.seek(0)'は先頭に戻るように探します。 –

関連する問題