Python Code Notes

Information by python engineer

csvファイルを読み書きする方法 Python

f:id:vigilantPotato:20190609112249p:plain

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