当我创建一个随机的数字列表时:
columns = 10
rows = 10
for x in range(rows):
a_list = []
for i in range(columns):
a_list.append(str(random.randint(1000000,99999999)))
values = ",".join(str(i) for i in a_list)
print values
然后一切都很顺利。
但是当我尝试将输出发送到文件时,如下所示:
sys.stdout = open('random_num.csv', 'w')
for i in a_list:
print ", ".join(map(str, a_list))
它只是输出10次的最后一行。如何将整个列表写入.csv文件?
答案 0 :(得分:0)
在第一个示例中,您将为每一行创建一个新列表。 (顺便说一下,你不需要将它们转换为str
两次)。
在第二个示例中,您将打印先前创建的最后一个列表。将输出移动到第一个循环:
columns = 10
rows = 10
with open("random_num.csv", "w") as outfile:
for x in range(rows):
a_list = [random.randint(1000000,99999999) for i in range(columns)]
values = ",".join(str(i) for i in a_list)
print values
outfile.write(values + "\n")
答案 1 :(得分:0)
因此,只需对代码进行少量修改,即可使用新变量all_list
import random
import sys
all_list = []
columns = 10
rows = 10
for x in range(rows):
a_list = []
for i in range(columns):
a_list.append(str(random.randint(1000000,99999999)))
values = ",".join(str(i) for i in a_list)
print values
all_list.append(a_list)
sys.stdout = open('random_num.csv', 'w')
for a_list in all_list:
print ", ".join(map(str, a_list))
答案 2 :(得分:0)
csv
模块处理了一堆处理csv文件所需的垃圾。
如下所示,您无需担心转换为字符串或添加行结尾。
import csv
columns = 10
rows = 10
with open("random_num.csv", "wb") as outfile:
writer = csv.writer(outfile)
for x in range(rows):
a_list = [random.randint(1000000,99999999) for i in range(columns)]
writer.writerow(a_list)