簡體   English   中英

從隨機列表打印到.csv文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM