はじめに
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()
終わりに
今回は下記について学んだ。
- Pythonでcsvモジュールを使用する
- PythonでCSVファイルを書き込む
- PythonでCSVからMySQLへのデータ流し込み
コメント