Python向CSV文件追加新行异常:内容未换行至新行
问题
我有一个CSV文件,想要向其中追加新行,但运行代码后,列表内容并未追加到新行,而是被添加到了CSV文件的最后一行。
运行的代码
List1=["test2"] List2=["test1"] with open (folder + '\\' + 'test.csv', 'a+', newline = '') as f_object: writer_object = writer(f_object) writer_object.writerow(List1) writer_object.writerow(List2)
原因
问题根源是原CSV文件的最后一行没有以换行符结尾。当用a+模式打开文件追加内容时,文件指针会直接定位到文件末尾,新写入的内容就会直接拼接在最后一行的末尾,而不是新起一行。
解决办法
在写入新行之前,先检查文件末尾是否存在换行符,没有的话先补一个换行:
import csv import os List1=["test2"] List2=["test1"] file_path = os.path.join(folder, 'test.csv') with open(file_path, 'a+', newline='') as f_object: # 定位到文件末尾 f_object.seek(0, os.SEEK_END) # 仅当文件非空时检查换行 if f_object.tell() > 0: # 回退一个字符,读取最后一个字符 f_object.seek(f_object.tell() - 1) last_char = f_object.read(1) # 若最后一个字符不是换行,就写入换行 if last_char != '\n': f_object.write('\n') # 写入新数据 writer_object = csv.writer(f_object) writer_object.writerow(List1) writer_object.writerow(List2)
这样就能保证新内容始终从新行开始写入。
内容的提问来源于stack exchange,提问作者newjenkinsuser
相关产品推荐
相关产品推荐

