将 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"):

遍历每个文件

这会将最后的结果存储在 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()