将 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.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"):
遍历每个文件
这会将最后的结果存储在 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()
我有一个包含 .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"):
这会将最后的结果存储在 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()