用excel保存csv,python可以正确追加行

当我从Excel中保存一个csv文件(Mac版本15.17)用python追加新行不按要求工作

eg我把这个文件保存在excel中:

col1 col2 col3 ----------------- 1234 1234 1234 1234 1234 1234 

我用python添加这些行

 5678 5678 5678 5678 5678 5678 

我得到:

 col1 col2 col3 1234 1234 1234 1234 1234 12345678 5678 5678 5678 5678 5678 

好像excel错过了最后一次换行。 有没有办法解决这个问题,而不是在每个excel文件的末尾手动添加(用代码)换行符。

用文本编辑器打开文件并添加换行符可以解决问题,但这是一个可怕的工作。

在Python中使用的代码将一行添加到csv:

 with file(append_to_this_csv.csv, 'a') as writefile: writer = csv.writer(writefile) row = [[5678,5678,5678]] writer.writerows(row) 

尝试在Python脚本中添加尾随换行符而不是使用文本编辑器:

 def fix_trailing_newline(fname): with open(fname, "r+") as f: f.seek(-1, 2) if(f.read() != '\n'): f.seek(0, 2) f.write('\n') 

或者,您可以更改将行附加到csv文件的方式。 您可以读取整个文件,在内存中追加行,然后写入整个文件:

 def append(fname, data): with open(fname) as f: reader = csv.reader(f) data = list(reader) + list(data) with open(fname, 'w') as f: writer = csv.writer(f) writer.writerows(data)