Python内でクエリを実行してソート済み(OrderBy付き)の結果を取得し、それをソートでまとまった項目の値ごとにCSVファイルに振分けたいと思っていますがうまくいきません。
ひとつのCSVファイルに出力するだけなら、最初に出力CSVファイルをopenしてforで1行ずつ取ればよいのですが、振分けする場合はforの中でopenする必要があると考えており、これをやるとwriter.writerow(doc)でopen済みであるにもかかわらず
"ValueError: I/O operation on closed file."というエラーとなってしまいます。
どういうふうにすれば、うまく振り分けができるのでしょうか。
どなたかお分かりになる方がいらっしゃいましたら、アドバイスのほど、よろしくお願いいたします。
python
1``` ## SQL実行 2 cursor.execute(exe_sql) 3 ## 結果をCSVに出力 4 deviceid = "" 5 lcnt = 0 6 mae = "" 7 openf = False 8 for doc in cursor: 9 if openf == False: 10 csv_name = "out_csvdata_{}.csv".format(doc[2]) 11 with open(csv_name, mode="w", encoding="utf-8", newline='') as wf: 12 writer = csv.writer(wf) 13 mae = doc[2] 14 openf = True 15 ## CSV書込 16 writer.writerow(doc) 17 if mae != doc[2]: 18 openf = False
回答2件
あなたの回答
tips
プレビュー