2016-02-17 32 views
0

当过我省从Excel csv文件(Mac版15.17)追加新行与蟒蛇根据需要保存CSV与Excel,以便Python可以追加行正确

例如:I在Excel中保存此文件不工作:

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

和我追加这些线路与蟒蛇

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) 
+0

请发布您用于写入csv文件的代码,并指定您是使用Python 2还是3 。我从Excel创建了一个简单的csv文件,并用Python进行了检查。我发现Excel不会添加尾随的换行符,因此您的假设是Excel不会这样做是不正确的。没有看到你的代码,我们将无法进一步帮助你。 –

回答

1

尝试增加在尾随的换行符在你的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) 
相关问题