【python】CSVファイルを保存したい

【python】CSVファイルを保存したい

pythonで更新したデータをcsvファイル形式で保存する方法を紹介します。
データの読み込みについて詳しくはこちらを参照ください。

csvファイルの読み書きのモジュールを下記で公開していますのでよろしければ本記事と合わせて参照ください。
https://sun-sun-sunday.com/python/python_csv_easy/

サンプルコード

 必要に応じてサンプルコード一式をダウンロードください。

【フォルダ構成】

test(フォルダ)
 |-main.py
 |-read.csv
 |-undaer(フォルダ)
    |-yomikomi.py

【main.py】

# -*- coding: utf-8 -*-

import sys
import codecs 
from os import path

##自作モジュールのインポート##
m_path = path.join(path.dirname(__file__),"under")
sys.path.append(m_path)
import yomikomi

###read.csvの読み込み###
rf_name="read.csv"
read_path = path.join(path.dirname(__file__),rf_name)
read_file=yomikomi.d_yomikomi(read_path)
print(read_file)
#########################


###読み込んだデータに1行追加する###
x="dc<*>今回追加した分\r\n"
read_file.append(x)
print(read_file)
###################################


###データを保存する####
wf_name="write.csv"
w_path=path.join(path.dirname(__file__),wf_name)
w_txt = codecs.open(w_path, 'w', 'UTF-8')
for x in read_file:
    w_txt.write(x)
w_txt.close()

【yomikomi.py】
 データ読み込み用の自作モジュールです。16行目以降はmain.pyから読み込んでも実行されないので(モジュールの動作確認用)今回は無視します。

import os
from os import path
import codecs 


def d_yomikomi(r_path):

    r_txt = codecs.open(r_path, 'r', 'UTF-8')
    r_txt_list = []
    for x in r_txt:
        r_txt_list.append(x)
    r_txt.close()
    return r_txt_list
    
    
if __name__ == '__main__':
    print("mainとして実行")
    rf_name="hoge.csv"
    rr_path = path.join(path.dirname(__file__),rf_name)
    c=d_yomikomi(rr_path)
    print(c)

実行結果&解説

 main.pyを実行するとread.csvが読み込まれます。20行目以降で新規の行を追加して、27行目以降でデータの保存をしています。
 実行後にwrite.csvの形でデータ追加されて保存されます。

【read.csv】

a<*>あいうえお
b<*>かきくけこ
ac<*>100
dc<*>200
ec<*>300
fc<*>400

【write.csv】

a<*>あいうえお
b<*>かきくけこ
ac<*>100
dc<*>200
ec<*>300
fc<*>400
dc<*>今回追加した分

あとがき

 今回はデータの読み込みのみをモジュール化していますが、書き込みもモジュール化しておくと今後のプログラム作成には便利だと思います。ちなみに筆者は、記事を書くにあたり久しぶりにモジュールの中身を開いたので詳細は忘れかけてました・・・。