2016-11-17 11 views
1

私はここで奇妙なことに遭遇しています。私はcsvファイルを処理するためにpythonのcsvモジュールを使用しています。 のコード例は、csvファイルを処理するPython

import csv 
f = open('file.csv','r') 
for i in csv.reader(f): 
    print i 

を下回っているこれは、リストとして、すべての行を出力して、私は

for i in csv.DictReader(f): 
    print i['header'] 

のような他の事をしたいときにだけfine.Andに動作します、これはとのすべてのデータを印刷すべきだと思いますヘッダーは「ヘッダー」と呼ばれていました。失敗しました。その後、私はたくさん試しました。私はCSVメソッドを実行するたびに開いたファイル関数を再度実行する必要があることがわかりました。

答えて

3

初めてファイルを読み終えたら、最初に読み返してからもう一度読む必要があります。 f.seek(0,0)のようなものです。

+0

ああありがとう!読者は物事があるような点があるのでしょうか? – honesty1997

+0

あなたは@ honesty1997を意味するのか分かりません。ファイルオブジェクトは最後に作業したファイルのオフセットを記憶しているので、同じファイルオブジェクト(この例では 'f')を使用してファイルと何度もやりとりする必要がある場合は、必ずその場所を先頭にリセットしてください。 – yelsayed

+0

ありがとう!このケースでは、ファイルをループした後、次回に再びループしたいときに何も得られなかったということですか?ファイルオブジェクトは最後にファイルをループして、オブジェクト? – honesty1997

0

このようにして、ヘッダーのみを取得できます。

import csv 
f = open('file.csv') 
csvDictInstance = csv.DictReader(f) 
print csvDictInstance.fieldnames 
関連する問題