将循环的输出存储为文件夹中所有csv文件的字典计数行



运行一个循环,计算文件夹中所有.csv文件的行数。我现在需要将这些结果保存到词典中。

import os
for filename in os.listdir(path):
with open(filename, 'r', encoding="latin-1") as fileObj:
if filename.endswith('csv'):
print('Rows counted {} in the csv {}'.format(len(fileObj.readlines()) -1, filename))

我得到了我想要的输出,但我试图将其保存到dict的任何方式都会导致";对文件的I/O操作已关闭"(如果这是一个愚蠢的问题,我是一个相对较新的抱歉(

区块报价

输出:

csv MA_2019_01.csv 中的行数为840593

csv MA_2019_02.csv 中的行数为818861

csv MA_2019_03.csv 中的行数为914653

csv MA_2019_04.csv 中的行数为1011374

csv MA_2019_05.csv 中的行数为1088294

csv MA_2019_06.csv 中的行数为1120696

csv MA_2019_07.csv 中的行数为1119932

csv MAg_2019_08.csv 中的行数为1194284

csv MA_2019_09.csv 中的行数为1136953

csv MA_2019_10.csv 中的行数为1010777

csv MA_2019_11.csv 中的行数为901468

csv MA_2019_12.csv 中的行数为950661

您可以在一个dict理解中做到这一点:

import os
file_counts = {
filename: len(open(filename, "r").readlines()) - 1
for filename in os.listdir(path)
if filename.endswith(".csv")
}
  1. 是否在打开csv文件之前检查csv文件更好,为什么要打开不必要的文件
  2. 在我看来,当不是计算长度,而是计算线条的总和时,就更清楚了
  3. 我们在循环中向字典中添加元素。我把没有扩展名的文件名作为关键字
import os

dict_count = dict()
for file in os.listdir(r'path'):
if file.endswith('csv'):
with open(file, 'r', encoding="latin-1") as f:
line_count = sum(1 for line in f.readlines()) - 1
file_name = os.path.splitext(file)[0]
dict_count[file_name] = line_count
print(dict_count)

最新更新