はじめに
今まで業務でPythonを扱ったことは無かったのですが、Pythonを使うことで色々と業務を効率化できると聞いたので、とても簡単ではありますが試しにどんなもんか触ってみました。
今回は特に実業務でもよく扱うCSVファイルの操作に絞って試してみました。
(異常系の考慮等は省いています)
今回用いたCSVファイルはこちら。
Apple,100,1
Orange,120,4
Banana,80,2
Apple,100,2
左から、商品、金額、個数の順となっています。
CSVファイルの読み込み
それでは早速CSVファイルを読み込んでみます。
import csv
with open('purchase.csv') as f:
print(f.read())
# Apple,100,1
# Orange,120,4
# Banana,80,2
# Apple,100,2
たった2行で書けました。
結果はファイルの中身がそのまま出力されています。
CSVモジュール
csvモジュールはPythonの標準ライブラリに含まれているため、インポートを追加すれば使えるようになります。
with構文
with構文はファイル操作に便利です。close処理が省略できます。
forループさせてみる
とりあえず回してみる。
import csv
with open('purchase.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# ['Apple', '100', '1']
# ['Orange', '120', '4']
# ['Banana', '80', '2']
# ['Apple', '100', '2']
行ごとの要素がリストとして出力されました。
csv.reader
CSVを読み込む際はreader
を使う。reader
を回すことでリストが取得できる。
要素の中身を取り出してみる
要素を取り出す場合はrow
のindexを指定してやれば良さそう。
import csv
with open('purchase.csv') as f:
reader = csv.reader(f)
for row in reader:
print('商品:' + row[0] + ' ' + '値段:' + row[1] + ' ' + '個数:' + row[2])
# 商品:Apple 値段:100 個数:1
# 商品:Orange 値段:120 個数:4
# 商品:Banana 値段:80 個数:2
# 商品:Apple 値段:100 個数:2
各要素毎の出力できました。
合計金額を計算してみる
forループの中で金額の計算を行い、最後に合計金額を出力するように変えてみました。
import csv
with open('purchase.csv') as f:
reader = csv.reader(f)
amount = 0
for row in reader:
amount += int(row[1]) * int(row[2])
print(amount)
print(amount)
# 100
# 580
# 740
# 940
# 合計金額:940円
ちゃんと合計金額が出力されました。
※ 最初のprint(amount)
は動作確認用です。
CSVファイルへの書き込み
今度は逆にCSVファイルに対して書き込みを行なってみたいと思います。
import csv
with open('purchase.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Grape',150,1])
# Grape,150,1
無事書き込めました・・・って全部消えてしまってる!?
既存ファイルに追記する場合は引数にw
ではなくa
を指定するようです。
import csv
with open('purchase.csv', 'a', newline='') as f: #追加
writer = csv.writer(f)
writer.writerow(['Grape',150,1])
# Apple,100,1
# Orange,120,4
# Banana,80,2
# Apple,100,2
# Grape,150,1
これで追加することが出来ました。
csv.writer
csvに書き込む際はwriter
を使う。書き込みには上書きと追加がある。
newline
改行コードが\r\n
である環境ではopen()
の引数newline
を''
として明記しておいた方が安全らしい。
最後に
今回は簡単ではありますが、CSVファイルの基本的な読み書きについて触れてみました。Pythonで出来ることは他にも山ほどあるので、これを機に色々試してみたいなと思いました。