読者です 読者をやめる 読者になる 読者になる

pythonでcsvファイルの読み書き

pythonをよく使うようになって、やはりファイルの読み書きについては避けられないところです。
今回はcsvファイルの読み書きについて説明します。

csvファイルの読み込み
下のコードを見ながら説明を見てください。
まずはcsvモジュールをimportします。
次にopenでファイルを実際に開きます。今は読み込みなので、第二引数に"r"を指定します。
そしてreaderという機能でcsvファイルを一行ずつ読み込んでいきます。
これは、一行ずつをリストとして返します。
ですので、for文に投げることができます。
最後にファイルを閉じるのを忘れないようにしましょう。

import csv #csvモジュール
f = open('csvFile.csv', "r") #読み込みなので"r"
dataReader = csv.reader(f)
for row in dataReader:
    print row
f.close()

実はcsvモジュールを使わなくてもnumpyでcsvファイルを読み込むことができます。

import numpy as np
data = np.genfromtxt('csvFile.csv', delimiter=',')

このようにするだけで行列として読み込むことができます。
一行ずつ読み込みたいときはcsvモジュールを使って、全体を読み込ませるときはnumpyを使うように筆者はしています。

csvファイルの書き出し
同様に下のコードを見ながら説明を見てください。
まずはcsvモジュールのimportをします。
次に保存したいlistを用意し、ファイルを開きます。
その開いたファイルをcsvファイル出力用のインスタンス(writer)に渡し、そのインスタンスに保存したいデータを渡すだけです。
最後にファイルを閉じるのを忘れないようにしましょう

import csv #csv module
data = [[1, 'foo'], [2, 'bar'], [3, 'hoge']] #データの準備
f = open('writer.csv', 'w') #ファイルを書き込みモードで開く
writer = csv.writer(f) #csv書き込み用のインスタンスを作成する
writer.writerows(data) #データをインスタンスに渡す
f.close() #ファイルを閉じる