Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python】CSVファイルへのデータの書き込み方法


Pythonでいろいろと作成している時に扱っているデータをどこかに取っておきたいとかデータを受け渡したいような場合が発生します。

そのような場合の1つの方法としてCSVファイルへの書き込みがあります。

 

今回はそのCSVファイルへの書き込み方法の説明をしていきたいと思います。

 

 

 

目次

 

 

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】enumerate()関数、reversed()関数を使用したループ処理や辞書型オブジェクトdictのループ処理などのfor文の使用方法 - 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 備忘録