[英]Printing to a .csv file from a Random 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
那么一切都很好。
但是,當我嘗試將輸出發送到文件時,如下所示:
sys.stdout = open('random_num.csv', 'w')
for i in a_list:
print ", ".join(map(str, a_list))
僅最后一行輸出10次。 如何將整個列表寫入.csv文件?
在第一個示例中,您將為每一行創建一個新列表。 (順便說一下,您不需要將它們兩次轉換為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")
蒂姆的答案很好用,但是我認為您正在嘗試打印到終端和文件在不同的位置。
因此,只需對代碼進行最少的修改,就可以使用新變量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))
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.