実現したいこと
Pythonで、csvファイルからデータを抽出し、テンプレートに差し込んだうえでtxtファイルとして保存するコードを作成しました。
応用として、今度は2つのcsvファイルからデータを抽出してテンプレートに差し込むコードを作りたいです。
元のコードはこんな感じです。
import csv csv_file = open("meisai_data.csv", "r", encoding="utf-8", errors="", newline="" ) #辞書形式 f = csv.DictReader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) items = {} template = ''' {姓} {名}様 株式会社〇〇の××です。 {振込月日}に振り込ませていただく給与について 明細(毎月末日締 翌月25日払)をお送りします。 以下略 ''' for items in f: filename = '{姓}{名}様.txt'.format(**items) f = open(filename, 'x') f.write(template.format(**items)) f.close() csv_file.close()
このコードのテンプレート部分の、「株式会社〇〇の××です。」など、基本の文章になる部分を2つめのcsvファイルにカラム付きのデータとして保存して、差し込めるようにしたいです。
理想のテンプレートは以下のような形になります。
template = ''' {姓} {名}様 {1行目} {振込月日}{2行目} {3行目} 以下略 '''
どうぞ知恵をお貸しください。よろしくお願いいたします。
###2つのcsvデータ
1.顧客データの入ったcsv(meisai_data.csv)
姓,名,振込月日 田中,太郎,6月24日 山田,花子,6月24日 佐藤,次郎,6月24日
2.明細の本文をcsv形式にしたもの(hinagata.csv)
1行目,2行目,3行目 株式会社〇〇の××です。,に振り込ませていただく給与について,明細(毎月末日締 翌月25日払)をお送りします。
試したこと
素人考えですが、globを使うと良いのかと思い、以下のようにコードを書き換えました。
import csv import glob file = glob.glob('./*csv') csv_file = open(file, "r", encoding="utf-8", errors="", newline="" ) #辞書形式 f = csv.DictReader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)
実行すると以下のようなエラーが出ました。
TypeError (note: full exception trace is shown but execution is paused at: <module>) expected str, bytes or os.PathLike object, not list
このエラーが解消されれば上手くいくのでしょうか?
回答1件
あなたの回答
tips
プレビュー