用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)