2017-02-22 51 views
0

我正在解析來自多個excel文件的數據,轉換它們並將它們寫入單個csv文件。我能夠得到它的工作。但是,我決定將這些部分分解爲函數,並通過依次調用每個函數來運行腳本。Python unicodecsv.writer每次寫入新行時重寫所有以前的行

進行此更改後,劇本的作家部分以某種方式循環,現在寫入以下內容: HEADER_ROW,data_row1,HEADER_ROW,data_row1,data_row2,HEADER_ROW ...

下面是打印功能的地方問題正在發生。我已經確認DictList2中的數據是正確形成的,[headers]是準確的。

def PrintProcess2(directory2): 
    with open(directory2 + "participant list.csv", 'wb') as f: 
     headers = sorted([k for k, v in DictList2[0].items()]) 
     csv_data = [headers] 
     for d in DictList2: 
      csv_data.append([d[h] for h in headers]) 

      writer = csv.writer(f) 
      writer.writerows(csv_data) 

在此函數的代碼是無功能的相同的版本,並且一個數據正確地寫入。在這一點上,我完全無法理解。有人可以幫忙嗎?

+0

刪除無關'xlrd'標籤。 –

回答

0
  1. 不要每次在循環周圍創建一個新的csv.writer實例。

  2. 你的主要問題是,要附加行csv_data然後使用writerows ...你可以試試下面的:

    def PrintProcess2(directory2): with open(directory2 + "participant list.csv", 'wb') as f: writer = csv.writer(f) headers = sorted([k for k, v in DictList2[0].items()]) writer.writerow(headers) for d in DictList2: writer.writerow([d[h] for h in headers])

+0

修復它。謝謝! –