open()でCSVにデータを追記した際に、ヘッダの文字列に改行せずそのまま追記してしまいます。
症状が発生したときにやったこと
ヘッダのみ記述したCSVを用意する。
Data3の直後は改行していません(Data3の後ろにカーソルがある状態)。
(改行すれば問題ないのですが、改行していなくても問題なく動作するようにしたいので。)
Data1,Data2,Data3
下記を実行。
Python
1import csv 2import os 3import sys 4 5dir = os.path.abspath(os.path.dirname(sys.argv[0])) 6fle = os.path.join(dir, "test.csv") 7 8with open(fle, "a", encoding="utf_8", newline="") as f: 9 writer = csv.writer(f) 10 writer.writerow(["aaa", "bbb", "ccc"]) 11
実行後のCSV。
cccの直後は改行されていました。
Data1,Data2,Data3aaa,bbb,ccc
ヘッダの直後が改行されていない場合は改行したいのですが、方法はありますか?
ちなみに、Data3の直後に改行したファイルをreader()で読むと改行を読み取れませんでした。
(Data1,Data2,Data3の下の行にカーソルがある状態)
Python
1import csv 2import os 3import sys 4 5dir = os.path.abspath(os.path.dirname(sys.argv[0])) 6fle = os.path.join(dir, "test.csv") 7 8data = [] 9 10with open(fle, "r", encoding="utf_8", newline="") as f: 11 reader = csv.reader(f) 12 for i in reader: 13 data.append(i) 14 15print(data) 16 17""" 18[['Data1', 'Data2', 'Data3']] 19""" 20
2回改行されていた場合(Data1,Data2,Data3の2行下にカーソルがある状態)は下のようになりました。
[['Data1', 'Data2', 'Data3'], []]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/25 13:42
2021/06/26 05:39
2021/06/26 06:04
2021/06/26 07:35