繁体   English   中英

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

[英]Appending output of a for loop for Python to a csv file

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

对于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()

请检查您的缩进。

您正在for file in glob.glob("*.txt"):使用for file in glob.glob("*.txt"):遍历每个文件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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM