如何用Python统计txt文件中各目录下.csv文件数量并汇总?
解决方法
你的代码问题出在两个核心点:
- 每次循环都把
x重置为0,完全没法实现累加计数 - 定义了
res字典却没用来存储目录的累计数据,只是单次打印临时的1
正确的思路是用字典维护每个目录的CSV文件计数,遇到符合条件的文件时给对应目录的计数加1,最后统一输出结果:
res = {} # 用with语句打开文件更安全,会自动处理文件关闭 with open('files.txt', 'r') as f: for line in f: path = line.strip() # 确保路径里有分隔符再分割,避免报错 if '/' in path: dir_name, filename = path.split('/') # 判断当前文件是否是CSV格式 if '.csv' in filename: # 目录不在字典里就初始化为0 if dir_name not in res: res[dir_name] = 0 # 计数累加 res[dir_name] += 1 # 遍历字典输出最终统计结果 for dir, count in res.items(): print(f"{dir} : {count}")
运行后会得到正确输出:
test : 1 test2 : 2
如果想让代码更简洁,可以用collections.defaultdict自动处理不存在的键(默认值为0):
from collections import defaultdict res = defaultdict(int) with open('files.txt', 'r') as f: for line in f: path = line.strip() if '/' in path: dir_name, filename = path.split('/') if '.csv' in filename: res[dir_name] += 1 for dir, count in res.items(): print(f"{dir} : {count}")
内容的提问来源于stack exchange,提问作者Tez
相关产品推荐
相关产品推荐

