Pythonでいろいろと作成している時に扱っているデータをどこかに取っておきたいとかデータを受け渡したいような場合が発生します。
そのような場合の1つの方法としてCSVファイルへの書き込みがあります。
今回はそのCSVファイルへの書き込み方法の説明をしていきたいと思います。
目次
- 1.1行分のデータのCSVファイルへの書き込み方法
- 2.複数行分のデータのCSVファイルへの書き込み方法
- 3.CSVファイルへ追記する方法
- 4.CSVファイルへの書き込みでの区切り文字の変更方法
- 5.先頭にヘッダーなどを追加する方法
CSVファイルへデータを書き込む場合にはcsv.writerクラスを使用します。
1.1行分のデータのCSVファイルへの書き込み方法
まずはじめにですが、リスト形式の1行分のデータを書き込む場合を考えます。
リスト形式の1行分のデータを書き込む場合には、writerow()メソッドを使用します。引数はリストになります。
たとえば、リスト形式のデータ(data)を用意しておいて以下のように記載すると、
import csv # サンプルデータの設定
data= ['aaa', 'bbb', 'ccc']
# csvモジュールを使って1行の内容をCSVファイルに書き込み with open('test.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerow(data)
同じフォルダ内にtest.csvファイルが作成され1行分のリストデータが書き込まれます。
これを以下のような読み込みコードを記載して再度読み戻してみると、
with open('test.csv') as f: print(f.read())
コンソール上には以下のように「 aaa,bbb,ccc」と表示されます。
# aaa,bbb,ccc
これにて1行分のデータをCSVファイルに書き込み、読み戻してprintできたことになります。
2.複数行分のデータのCSVファイルへの書き込み方法
次に今度は、複数行分のデータを書き込む場合を考えます。
複数行分のデータを書き込む場合には、writerrows()メソッドを使用します。引数はリストのリストになります。
たとえば、リストのリスト形式のデータ(data)を用意しておいて以下のように記載すると、
import csv # サンプルデータの設定 data1= ['aaa', 'bbb', 'ccc'] data2= ['ddd', 'eee', 'fff'] data3= ['ggg', 'hhh', 'iii'] data= [data1, data2, data3] # csvモジュールを使って複数行の内容をCSVファイルに書き込み with open('test.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerows(data)
同じフォルダ内にtest.csvファイルが作成され複数行(3行分)のリストのリスト形式のデータが書き込まれます。
これを前回同様に以下のような読み込みコードを記載して再度読み戻してみると、
with open('test.csv') as f: print(f.read())
コンソール上には以下のように
「 aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii」
と表示されます。
# aaa,bbb,ccc
# ddd,eee,fff
# ggg,hhh,iii
3.CSVファイルへ追記する方法
ここまでの2つの方法では、test.csvファイルはその都度上書きされますが、
元々あるファイルに追記したい場合もあると思います。
そのような場合には、ファイルをopenする時に、追記モード'a'で開きます。
たとえば、すでに先程のtest.csvがある状態で以下のように追記モード'a'で再度書き込みを実行すると、
import csv # サンプルデータの設定 data1= ['aaa', 'bbb', 'ccc'] data2= ['ddd', 'eee', 'fff'] data3= ['ggg', 'hhh', 'iii'] data= [data1, data2, data3] # csvモジュールを使って複数行の内容をCSVファイルに書き込み(追記) with open('test.csv', 'a', newline='') as f: writer = csv.writer(f) writer.writerows(data)
同じフォルダ内に元々あるtest.csvファイルに再度3行分追記されます。
これをこれまで同様に以下の読み込みコードを記載して再度読み戻してみると、
with open('test.csv') as f: print(f.read())
コンソール上には以下のように
「 aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii」
と表示されます。
# aaa,bbb,ccc
# ddd,eee,fff
# ggg,hhh,iii
# aaa,bbb,ccc
# ddd,eee,fff
# ggg,hhh,iii
4.CSVファイルへの書き込みでの区切り文字の変更方法
これまでの場合は、ファイル内の区切り文字はデフォルトでカンマでしたが、これを変更する場合には、引数delimiterで指定できます。
たとえば、タブ区切りとしたい場合には、以下のようにdelimiter = '\t'を追加します。
import csv # サンプルデータの設定 data1= ['aaa', 'bbb', 'ccc'] data2= ['ddd', 'eee', 'fff'] data3= ['ggg', 'hhh', 'iii'] data= [data1, data2, data3] # csvモジュールを使って複数行の内容をCSVファイルに書き込み(タブ区切り) with open('test.csv', 'w', newline='') as f: writer = csv.writer(f, delimiter = '\t')
writer.writerows(data)
5.先頭にヘッダーなどを追加する方法
最後にもう1つですが、先頭にヘッダーなどを1行追加したい場合ですが、これについてはそのための特別な機能はないため、以下のように単にwriterrow()メソッドを使用して1行書き込みを追加することになります。
import csv # サンプルデータの設定
header= ['h1', 'h2', 'h3']
data1= ['aaa', 'bbb', 'ccc'] data2= ['ddd', 'eee', 'fff'] data3= ['ggg', 'hhh', 'iii'] data= [data1, data2, data3] # csvモジュールを使って複数行の内容をCSVファイルに書き込み with open('test.csv', 'w', newline='') as f: writer = csv.writer(f)
writer.writerow(header) writer.writerows(data)
これをこれまで同様に以下の読み込みコードを記載して再度読み戻してみると、
with open('test.csv') as f: print(f.read())
コンソール上には以下のように
「 h1,h2,h3
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii」
と表示されます。
# h1,h2,h3
# aaa,bbb,ccc
# ddd,eee,fff
# ggg,hhh,iii
関連記事:
【Python】おすすめ学習本ランキング8選 - Django Girls and Boys 備忘録
【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録
【Python】keyboardライブラリでのキー入力検出に使用可能なキーの種類 - Django Girls and Boys 備忘録
【Python】range、break、continue、スライスによる範囲指定などfor文の基本的な使用方法 - Django Girls and Boys 備忘録
【Python】スライスによる範囲指定などスライスの使用方法 - Django Girls and Boys 備忘録
【Python Selenium】各ブラウザ用のドライバーを自動アップデートする方法 - Django Girls and Boys 備忘録
【Python Selenium】Pythonで行うproxy環境設定方法 - Django Girls and Boys 備忘録
【PythonからWeb操作】seleniumのインストール手順 - Django Girls and Boys 備忘録
【PythonによるExcelファイルの読み書き】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法 - Django Girls and Boys 備忘録
【Python】pyautoguiを使用したマウスの操作方法 - Django Girls and Boys 備忘録
【Python】pyautoguiによるキーボード操作、キー入力方法 - Django Girls and Boys 備忘録
【Python】Seleniumで新しいタブを開く方法 - Django Girls and Boys 備忘録
【Python】CSVファイルからのデータの読み込み方法 - Django Girls and Boys 備忘録
【Python】CSVファイルへのデータの書き込み方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウ表示時などでのWaitの方法、待機方法 - Django Girls and Boys 備忘録