[英]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.csv', '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"):
这会将最后的结果存储在a
, b
和c
。 它似乎没有写在任何地方。
然后,通过每个项目循环使用for a in os.listdir('c:/Users/dasa17/Desktop/sample/Upload'):
和存储a
从这个循环(的文件名),以及最后的值b
和c
从初始循环开始。
我尚未运行,但按以下方式重新排序可能会解决此问题:
import glob
import os
import csv
os.chdir('c:/Users/dasa17/Desktop/sample/Upload')
d=open('c:/Users/dasa17/Desktop/sample/Output/LineCount.csv', '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.