Pythonを用いてcsvファイルを読み書きする方法をまとめました。
パスの操作方法やファイルを開くopen関数については、以下の記事を参照してください。
目次
csvモジュール
モジュールのインポート
Pythonでcsvファイルを扱うためには、csvモジュールをインポートする必要があります。csvモジュールは組み込みモジュールのため、インストールは不要です。
例:モジュールのインポート
import csv
csvファイルを開く
csvファイルを扱うためには、まずはopen関数でcsvファイルを開き、ファイルオブジェクトを生成します。そのファイルオブジェクトをcsv.reader関数またはcsv.writer関数に渡すことで、csvモジュールを用いたcsvファイルの読み書きが可能になります。
例:csvファイルをreader関数で開き、中身を表示する
事前にカレントディレクトリに「test.csv」を作成し、以下の内容を入力し保存しておく。
apple,Aomori,23 grape,Nagano,11 orange,America,53
import csv with open("test.csv") as f: reader = csv.reader(f) print(list(reader))
出力:[['apple', 'aomori', '23'], ['grape', 'nagano', '11'], ['orange', 'america', '53']]
csvファイルの読み込み
csvファイルの読み込み
前述の通り、csvファイルの読み込みモードで開くにはcsv.reader関数を使用します。また、csv.readeer関数で生成されたreaderオブジェクトの中身を表示するためには、list関数を用いてリストに変換する必要があります。
例:csvファイルをreader関数で開き、中身を表示する
事前にカレントディレクトリに「test.csv」を作成し、以下の内容を入力し保存しておく。
apple,Aomori,23 grape,Nagano,11 orange,America,53
import csv with open("test.csv") as f: reader = csv.reader(f) print(list(reader))
出力:[['apple', 'aomori', '23'], ['grape', 'nagano', '11'], ['orange', 'america', '53']]
csvファイルを1行ずつ読み込み
csvファイルのサイズが巨大な場合は、readerオブジェクトをlist化して一度にすべてを読み込むよりも、for文を用いて1行ずつ読み込んだ方が扱いやすくなります。
例:for文で1行ずつ読み込む
上記の「test.csv」を準備しておく。
import csv if __name__ == "__main__": with open("test.csv") as f: reader = csv.reader(f) for r in reader: print(r)
出力:
['apple', 'Aomori', '23'] ['grape', 'Nagano', '11'] ['orange', 'America', '53']
csvファイルの書き込み
csvファイルの書き込み
csvファイルの書き込みモードで開くにはcsv.writer関数を使用します。そして、csv.writer関数で生成されたwriterオブジェクトのwriterowメソッドを用いることで、ファイルへの書き込みを行います。
ファイルの書き込みを行うため、open関数でファイルを開く際に引数「w」を渡します。また、OSがWindowsの場合は、さらに引数newlineに空文字を渡す必要があります。
例:csvファイルに書き込む
import csv if __name__ == "__main__": with open("test.csv", "w", newline="") as f: writer = csv.writer(f) writer.writerow(["apple", "Aomori", 23]) writer.writerow(["grape", "Nagano", 11]) writer.writerow(["orange", "America", 53])
出力:
以下の内容の「test.csv」が生成
apple,Aomori,23 grape,Nagano,11 orange,America,53