2016-04-16 5 views
-6

からの書き込み私はしかし、プログラムは、を書き込み、はリストボックス内のデータをcsvファイルからデータを読み取り、表示するプログラムを作成しましたcsvファイルもともと私はデータを読み書きするために別々のファイルを持っていましたが、今は同じファイルを使用したいのですが、 'IndexError:リストのインデックスが範囲外です'ということが起こります。 2つのcsvファイルを使用しているときにプログラムが完璧に動作しているときに、なぜこのようになっているのかわかりません。例えばは「はIndexError:範囲外のリストインデックス」 - 読書&同じcsvファイル

I開き、読み、表示結果:

with open('QWERTY.csv', 'rt')as f: 
    reader=csv.reader(f) 
    people=[] 
    for column in reader: 
     people.append(column[0:8]) 
    namesList = [x[0] for x in people] 
    for names in (namesList): 
     namebox.insert(END, names) 

その後、さらに上の私は、同じファイルに書き込むプログラムで:

with open('QWERTY.csv', 'a') as f: 
    fieldnames=['name'] 
    writer=csv.DictWriter(f,fieldnames=fieldnames) 
    writer.writerow({'name':i_name}) 
+1

いくつかのコード行を共有すると役に立つかもしれません... – tfv

+1

デバッグのヘルプを求める質問(** "なぜこのコードは動作していませんか?" **)は、望ましい動作、*特定の問題またはエラー*それを再現するために必要な*最短のコード**とは質問そのものです**。 **明確な問題文**のない質問は他の読者には役に立たない。参照:[最小限で完全で検証可能な例を作成する方法](http://stackoverflow.com/help/mcve)あなたのコードを見せないと、世界中のどのようにあなたが誰かを助けることを期待していますか?私たちは読者ではありません。 – MattDMo

+1

"インデックスが範囲外です"とは正確に何を意味しているかを意味します。あなたがしなければならないことは、インデックスが何であるかを想定したものと比較して、インデックスされたアイテムの内容があなたが思うものと比較されるかを見るための基本的なデバッグです。 –

答えて

0

誰のためでも同じ問題を抱えています将来、ソリューションは余分な行を削除することです。

writer=csv.DictWriter(f,fieldnames=fieldnames, lineterminator='\n') 

それが

を変更することで、余分な行間を読むことができますが、この:

(私の例では)
namesList = [x[0:1] for x in people] 

空白の結果は次のとおりです。これに

namesList = [x[0] for x in people] 

余分なラインを削除する方が良い方法です。

関連する問題