最近は Python ばかり触っているのですが、色んなプログラムで使いまわしがちな、良い風に言えば流用度の高いコードをメモ(保存用)として残しておきます。
今回は「CSV を保存する」
参考サイト
Python に関する情報はまず以下のサイトを参照するのがベスト。基本的な使い方から応用まで幅広く助かります。
note.nkmk.me
import os
import csv
def writeFile_MatrixMode(OUTPUTFILE,FIELDNAMES,DATASET):
if os.path.isfile(OUTPUTFILE):
pass
else:
with open(OUTPUTFILE, "w", newline='', encoding='utf-8') as f:
fieldNames = FIELDNAMES
writer = csv.DictWriter(f, fieldnames=fieldNames)
writer.writeheader()
f.close()
with open(OUTPUTFILE, "a", newline='', encoding='utf-8') as f:
writer = csv.writer(f, quoting=csv.QUOTE_ALL)
writer.writerows(DATASET)
f.close()
単純にCSVを保存するだけの関数。
OUTPUTFILE に出力ファイル名文字列、FIELDNAMES にヘッダのリスト、DATASET にリスト内リスト(2次元リスト)を渡す。
一度変数を格納してから渡してたり、with で開いているのに律義に close してたり、判定を isfile にして pass してたりと、コード自体はまだ短くできる。(後で改修するときに面倒だから直してない)
from datetime import datetime
dtNow = datetime.now()
output_filename= 'folder\\OUTPUT_FILE_TITLE_' + dtNow.strftime('%Y%m%d') + '_' + dtNow.strftime('%H%M%S') + '.csv'
field_names= ['Alphabet', 'Number', 'Iroha']
dataset= [['A','1','い'],['B','2','ろ'],['C','3','は']]
writeFile_MatrixMode(output_filename, field_names, dataset)
こんな感じでセットしておいて関数を呼ぶ。
元々一次元リストを保存したくて作ったけど、派生で作った表形式(マトリクス)のリストをよく使う。重複排除モードも作ったけど長すぎて流用しにくい。
最新
最近は Pandas で成型することが多くなったので、そのまま df.to_csv で事足りることが多い。残念。
gyrokawai-memo.hatenablog.com
謝辞
参考サイトの皆さま、ありがとうございました。