将Python的for循环的输出附加到csv文件

时间:2016-10-06 21:10:01

标签: python csv

我有一个包含.txt文件的文件夹。我的代码将在每个文件中找到行数和字符数,并将每个文件的输出保存在不同目录中的单个csv文件中。 csv文件是 Linecount.csv 。由于某种原因,输出到csv文件正在为最后一个输出的字符和行数重复,尽管打印输出产生了正确的结果。 print语句的输出是正确的。

对于csv文件,它不是。

import glob 
import os 
import csv 

os.chdir('c:/Users/dasa17/Desktop/sample/Upload') 

for file in glob.glob("*.txt"): 
    chars = lines = 0 
    with open(file,'r')as f: 
        for line in f: 
        lines+=1 
        chars += len(line) 
    a=file 
    b=lines 
    c=chars 
    print(a,b,c) 

    d=open('c:/Users/dasa17/Desktop/sample/Output/LineCount.cs‌​v', 'w') 
    writer = csv.writer(d,lineterminator='\n') 
    for a in os.listdir('c:/Users/dasa17/Desktop/sample/Upload'): 
        writer.writerow((a,b,c)) d.close()

1 个答案:

答案 0 :(得分:0)

请检查你的缩进。

您正在使用for file in glob.glob("*.txt"):

循环浏览每个文件

这会将最后一个结果存储在abc中。它似乎没有写在任何地方。

然后使用for a in os.listdir('c:/Users/dasa17/Desktop/sample/Upload'):循环浏览每个项目,并从此循环(文件名)中存储a,并从最初的bc存储最后一个值循环。

我没有跑,但按照以下方式重新排序可能会解决问题:

import glob 
import os 
import csv 

os.chdir('c:/Users/dasa17/Desktop/sample/Upload') 
d=open('c:/Users/dasa17/Desktop/sample/Output/LineCount.cs‌​v', 'w')
writer = csv.writer(d,lineterminator='\n') 

for file in glob.glob("*.txt"): 
        chars = lines = 0 
        with open(file,'r') as f: 
                for line in f: 
                lines+=1 
                chars += len(line) 
        a=file 
        b=lines 
        c=chars 
        print(a,b,c) 
        writer.writerow((a,b,c))
d.close()