2013-09-30 4 views
0

Когда я создаю случайный список номеров, как так:Печать в файл .csv из случайного списка

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

В первом примере вы создаете новый список для каждой строки. (Кстати, вам не нужно их конвертировать в 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") 
+0

Это сделало трюк !!! Большое спасибо. – user1793317

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)) 
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) 
Смежные вопросы