Python重写,而不是附加在.csv文件中的数据

问题描述:

我有50个文件,我处理,然后将每个文件的输出写入.csv文件,但它只给最后一个文件输出到.csv文件文件Python重写,而不是附加在.csv文件中的数据

with open('output.csv','a+') as out: 
    out.write(filename) 
    out.write('\n') 
    out.write('\n') 
    out.write(';''Golden readback from vivado before fault-injection') 
    out.write(';''Readback from vivado after the injection') 
    out.write(';''Real-Delta') 
    out.write('\n') 
# original is my data. 
    for row in original: 
    for col in row:  
     out.write('{0};'.format(col)) 
    out.write('\n') 
    out.write('\n') 
out.close() 

任何想法如何将所有文件输出到相同的.csv文件。

+1

尝试只有 “一个”,而不是一个+,不out.close() – Marco

+1

使用'csv'模块来创建一个'csv'文件。另外,'out.close()'不是必须的。 'with'语句会隐含地调用它。 – chepner

+0

我已经试过了,但没有运气。 – hassan

您正在使用'a +'模式在您的代码中追加结果,请尝试'w +',而应该使用它。

with open('output.csv','w+') as out: 
    out.write(filename) 
    out.write('\n') 
    out.write('\n') 
    out.write(';''Golden readback from vivado before fault-injection') 
    out.write(';''Readback from vivado after the injection') 
    out.write(';''Real-Delta') 
    out.write('\n') 
# original is my data. 
    for row in original: 
    for col in row:  
     out.write('{0};'.format(col)) 
    out.write('\n') 
    out.write('\n') 
out.close() 
+0

不,它没有工作。 – hassan

+0

@hassan原始数据是否包含所有数据,或者是您在处理完每个文件后运行的代码? – StarLord

+0

原始数据为每次运行计算。它为每个文件运行@Arnab Sharma – hassan

import glob 
from itertools import islice 
import linecache 

path = '*.rbd' 
#path='original-adder.rbd' 
files=sorted(glob.glob(path)) 

for filename in files: 

del_lines = 101 
with open(filename,'r') as f: 

    i=1 
    while i <= del_lines: 
    line1 = f.readline() 
    i+=1 

    i=0  
    count0_bram = 0 
    count1_bram = 0 
    count0_nonbram = 0 
    count1_nonbram = 0 
    totalbits = 0 
    totalbitsones = 0 
    totalbitszeros = 0 

    NON_BRAM_bits_zero_original=57411950 
    NON_BRAM_bits_ones_original=3110418 

    difference_zero_non_BRAM = 0 
    difference_ones_non_BRAM = 0 


# COUNT NON BRAM 

    for i in range(102,1891426): 
    line=linecache.getline(filename,i) 

    count_zeros=line.count('0') 
    count0_nonbram=count0_nonbram+count_zeros 

    count_ones=line.count('1') 
    count1_nonbram=count1_nonbram+count_ones 

    i=0 
# to count BRAM 

#lines=islice(fin,1891427,1903714) 
    for i in xrange(1891427,2432181): 
    line=linecache.getline(filename,i) 


    #line=line.strip() 
    count_zeros=line.count('0') 
    count0_bram=count0_bram+count_zeros 

    count_ones=line.count('1') 
    count1_bram=count1_bram+count_ones 
    i=0 

    totalbits=count0_bram+count1_bram+count0_nonbram+count1_nonbram 
    totalbitsones=count1_bram+count1_nonbram 
    totalbitszeros=count0_bram+count0_nonbram 
    difference_zero_non_BRAM = count0_nonbram- NON_BRAM_bits_zero_original # new -old 
    difference_ones_non_BRAM = count1_nonbram-NON_BRAM_bits_ones_original # new - old 


    print filename 
    print "-------------------------------------------------" 
    print "Total Bits:%d"%totalbits 
    print "Number of totalbits-zeros: %d." %totalbitszeros 
    print "Number of totalbits-ones: %d." %totalbitsones 
    print "Number of BRAM-Zeros: %d." %count0_bram 
    print "Number of BRAM-ones: %d." %count1_bram 
    print "Number of NON_BRAM-Zeros: %d." %count0_nonbram 
    print "Number of NON_BRAM-Ones: %d." %count1_nonbram 
    print "difference_zero_non_BRAM:%d."%difference_zero_non_BRAM 
    print "difference_ones_non_BRAM:%d."%difference_ones_non_BRAM 
    print "--------------------------------------------------" 



original= [['Total Bits', 77826496,totalbits,totalbits-77826496],['Total number of bits @0',74651972,totalbitszeros,totalbitszeros-74651972],['Total number of bits @1',3174524,totalbitsones,totalbitsones-3174524],['Totalnumber of BRAM bits-zero',17240022,count0_bram,count0_bram-17240022],['Total number of BRAM bits-ones',64106,count1_bram,count1_bram-64106],['Total number of non-BRAM [email protected]',57411950,count0_nonbram,count0_nonbram-57411950],['Total number of non-BRAM [email protected]',3110418,count1_nonbram,count1_nonbram-3110418]]