2016-02-17 28 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) 
相關問題