You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将文件夹中CSV文件行数统计结果保存为字典?

解决“I/O operation closed on file”错误的方案

错误原因

你遇到的错误是因为**with语句块执行完毕后,文件对象会被自动关闭**。原代码仅打印结果时,所有文件操作都在with块内完成,所以没问题;但添加字典保存逻辑时,你大概率将部分文件操作移到了with块外部,导致访问已关闭的文件对象触发报错。

修正后的代码

import os

# 初始化存储统计结果的字典
row_counts = {}
# 替换为你的目标文件夹路径
target_path = "./your_csv_folder"

for filename in os.listdir(target_path):
    # 先筛选csv文件,避免无效文件打开操作
    if filename.endswith('.csv'):
        # 拼接完整文件路径,防止找不到文件
        full_file_path = os.path.join(target_path, filename)
        with open(full_file_path, 'r', encoding="latin-1") as fileObj:
            # 统计行数(减1去除表头)
            total_rows = len(fileObj.readlines()) - 1
            print(f'Rows counted {total_rows} in the csv {filename}')
            # 将结果存入字典
            row_counts[filename] = total_rows

# 查看最终字典结果
print("\n统计结果字典:")
print(row_counts)

关键优化点

  • 调整文件判断顺序:先判断是否为csv文件再打开,避免无效的文件IO操作。
  • 拼接完整路径:os.listdir仅返回文件名,直接打开会在当前工作目录查找,用os.path.join拼接目标路径更可靠。
  • 所有文件操作限制在with块内:确保统计、读取等操作都在文件对象有效生命周期内完成,避免访问已关闭的文件。

内容的提问来源于stack exchange,提问作者onionbag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:51:20