在python中保存一个列表

时间:2014-01-20 21:37:50

标签: python export export-to-csv

我正在尝试将输出导出到列表中。这是我的代码:

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。

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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

答案 2 :(得分:0)

每次在csvfile模式下打开w时,都会将其截断为0字节。而是以a模式打开新文件,该模式会向其追加数据。