我有一个包含.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.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()
答案 0 :(得分:0)
请检查你的缩进。
您正在使用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()