我正在尝试将输出导出到列表中。这是我的代码:
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。
答案 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
模式打开新文件,该模式会向其追加数据。