2014-01-20 36 views
1

我想將我的輸出導出到列表中。這裏是我的代碼:在python中保存一個列表

import csv 
import numpy as np 

row_list = np.arange(0,5) 
for row in row_list: 
    a = row + 3 
    b = row + 4 
    c = row + 5 


    result = [a, b, c] 
    csvfile = "/home/Desktop/test" 

    with open(csvfile, "w") as output: 
     writer = csv.writer(output, lineterminator='\t') 
     for val in result: 
      writer.writerow([val]) 

我運行的代碼,是我的桌面上創建一個測試文件(這正是我想要的),但文件中的數據是錯誤的。 輸出是: 7 8 9

但這不是我想要的。該腳本正在循環運行,但僅導出最後一行。任何想法如何讓它以下列方式導出文件中的數據:

3 4 5 
4 5 6 
5 6 7 
6 7 8 
7 8 9 

謝謝!

編輯:如果我想把這個腳本給我的教授怎麼辦?她的筆記本上不存在目錄/home/paula/Desktop/test。我試圖寫csvfile = "~/Desktop/test",但它給了我一個錯誤。任何想法?

注:我使用的是Ubuntu 12.04。

回答

1

當您在w模式下打開文件時,它會清除所有現有內容。即使沒有,你也不會在行尾寫一個換行符。

打開文件一次,並且使用的「行」更明智的概念 - 一個對應於您的數據的實際行:

with open(csvfile, "w") as output: 
    writer = csv.writer(output, delimiter='\t') 

    for row_num in row_list: 
     a = row_num + 3 
     b = row_num + 4 
     c = row_num + 5 

     row = [a, b, c] 
     writer.writerow(row) 
0

open()文件每次通過循環,使用'w'((over)write)作爲文件模式而不是'a'(追加)。有關讀取和寫入文件的更多信息,請參見the Python docs

或者,打開外環路文件

csvfile = "/home/paula/Desktop/test" 
with open(csvfile, 'w') as f: 
    writer = csv.writer(output, lineterminator='\t') 
    for row in rowlist: 
     # do the output here 
0

每次csvfilew模式打開時你截取下來到0字節。相反,請在a模式下打開新文件,該模式將向其添加數據。

相關問題