csv在循环内写

时间:2011-11-10 10:49:10

标签: python csv

import csv
a=[]
with open('large.csv','w') as f1:
    writer=csv.writer(f1, delimiter='\t',lineterminator='\n',)

    for i in range(1000000):
        for j in range(i+1):
            a.append(i+j*0.2)
            #print i,j,a
        #want to write into same csv file???
        '''like            
               0     1     2......999999
            0  0.0
            1  1.0  1.2
            2  2.0  2.2   2.4
            .   .....
            .   .....
            999999
        ''' 
        a=[]

我这样做是为了避免相同的计算两次,因为列表'a'会变大,我必须再次初始化它(在外循环的一次迭代之后)。所以,我想要列表(在再次初始化之前)以上述方式写入csv文件,但我无法这样做......请帮助。

1 个答案:

答案 0 :(得分:14)

你想做这样的事吗?

import csv
with open('large.csv','w') as f1:
    writer=csv.writer(f1, delimiter='\t',lineterminator='\n',)
    for i in range(1000000):
        row = [i + j*0.2 for j in range(i+1)]
        writer.writerow(row)

或行/列标题:

import csv
with open('large.csv','w') as f1:
    writer=csv.writer(f1, delimiter='\t',lineterminator='\n',)
    writer.writerow([''] + range(1000000))
    for i in range(1000000):
        row = [i] + [i + j*0.2 for j in range(i+1)]
        writer.writerow(row)

后者返回以下文件(我用10替换了1000000):

        0       1       2       3       4       5       6       7       8       9
0       0.0
1       1.0     1.2
2       2.0     2.2     2.4
3       3.0     3.2     3.4     3.6
4       4.0     4.2     4.4     4.6     4.8
5       5.0     5.2     5.4     5.6     5.8     6.0
6       6.0     6.2     6.4     6.6     6.8     7.0     7.2
7       7.0     7.2     7.4     7.6     7.8     8.0     8.2     8.4
8       8.0     8.2     8.4     8.6     8.8     9.0     9.2     9.4     9.6
9       9.0     9.2     9.4     9.6     9.8     10.0    10.2    10.4    10.6    10.8