PythonとCSVの連携

はじめに

Excelを使用しているとシートを保存する選択肢に通常のExcelブック(xlsx)の他にCSVという形式が利用できる。CSVを扱うことは日常生活では非常に多く、これをPythonから操作できれば便利である。実際にPythonでは標準モジュールの一部としてCSVファイルを扱うことのできるモジュールが最初から利用できる。

今回は PythonとCSVの連携方法について学んでいく。

csvモジュールを使用する

csvモジュールは標準モジュールの1つとして提供されているため、Pythonの実行環境が構築されてさえいれば、すぐに使用できる。

 

以下のコードを実行すると、各行を読み込んで順番に出力できる。

 

import csv

with open("scale.csv") as file:

    #以下でファイルに対して処理を行う

    rows = csv.reader(file)

    for row in rows:

        print(row)

結果

 

PythonでCSVファイルを書き込む

今度は逆にPythonからCSVファイルを作成してみる。

CSVはシンプルなテキストデータなので直接CSVのルールに従ったテキストを直接書き込んでも問題ないが、これよりもcsvモジュールを利用した方が便利で、構文のミスも起きにくい。

上記同様、withを使用する構文だが、今回は書き込みを行うために引数に’w’を追加して書き込み可能にする。

 

import csv

scales = [

    ["Major", "C", "CMaj7", "Dm7", "Em7", "FMaj7", "G7", "Am7", "Bm7-5"],

    ["Major", "G", "GMaj7", "Am7", "Bm7", "CMaj7", "D7", "Em7", "F#m7-5"],

    ["Major", "D", "DMaj7", "Em7", "F#m7", "GMaj7", "A7", "Bm7", "C#m7-5"],

]

with open("scale.csv", "w") as file:

    #以下でファイルに対して処理を行う

    writer = csv.writer(file)

    #各行書き込み

    writer.writerow(["Scale","Root","IMaj7","IIm7","IIIm7","IVMaj7","V7","VIm7","VIIm7-5"])

    for scale in scales:

        writer.writerow(scale)

結果

 

PythonでCSVからSQLへのデータ流し込み

CSVからSQLへのデータ流し込みを実施する。

import csv
import mysql.connector

#接続する
connect = mysql.connector.connect(
user='root',
password='',
host='localhost',
database='scale')

#カーソルを作成
cursor = connect.cursor()

#もしテーブルが存在しない場合は作成
cursor.execute("CREATE TABLE IF NOT EXISTS scale(Scale TEXT, Root TEXT, I TEXT, IIm TEXT, IIIm TEXT, IV TEXT, V TEXT, VIm TEXT, VIIm TEXT)")
#

with open("scale.csv", "r") as file:
rows = csv.reader(file)
for row in rows:
#最初の行は取り除く
#データの挿入
cursor.execute('INSERT INTO scale (Scale, Root, I, IIm, IIIm, IV, V, VIm, VIIm) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)', row)


#変更を反映させる
connect.commit()

#中身を確認する
# cursor.execute('select * from scale')
# result = cursor.fetchall()
# print(result)

cursor.close()
connect.close()

Insertを実施

結果

 

終わりに

今回は下記について学んだ。

  • Pythonでcsvモジュールを使用する
  • PythonでCSVファイルを書き込む
  • PythonでCSVからMySQLへのデータ流し込み

 

コメント