使用 excel 保存 csv,以便 python 可以正确附加行



当我从 excel(Mac 版本 15.17(保存 csv 文件时,使用 python 附加新行无法按预期工作

例如,我将此文件保存在 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)

最新更新