python读取csv文件报错

python csv.reader读取csv文件报错,信息如下

Traceback (most recent call last):
  File "D:\pywork\ZT_DataTeamMember\zhanglh\python\knowledge_base\esi_rank.py", line 82, in <module>
    csv_2_mdb(mdbPath)
  File "D:\pywork\ZT_DataTeamMember\zhanglh\python\knowledge_base\esi_rank.py", line 69, in csv_2_mdb
    row_count = sum(1 for row in reader) - 1
                ^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\pywork\ZT_DataTeamMember\zhanglh\python\knowledge_base\esi_rank.py", line 69, in <genexpr>
    row_count = sum(1 for row in reader) - 1
                   ^^^^^^^^^^^^^^^^^^^^^
_csv.Error: field larger than field limit (131072)

这个错误是因为 csv.reader 默认将每行读取的内容的长度限制为 131072 字节,如果读取的某行内容超过了这个限制,就会抛出 _csv.Error 异常。为了解决这个问题,可以通过设置 csv.field_size_limit 来增加 CSV 文件读取的行长度限制。

import os
import csv

# 设置 CSV 文件读取的行长度限制为最大值
csv.field_size_limit(2**31-1)

# 定义目标目录
directory = '/path/to/directory'

# 遍历目录下的所有文件
for filename in os.listdir(directory):
    # 如果文件名以 '.csv' 结尾,则认为是 CSV 文件
    if filename.endswith('.csv'):
        # 打开文件,使用 csv.reader 读取文件内容
        with open(os.path.join(directory, filename), 'r') as file:
            reader = csv.reader(file)
            # 统计文件行数,注意要跳过标题行
            row_count = sum(1 for row in reader) - 1
            # 输出文件名和行数
            print(f"{filename}: {row_count} 行")

使用 csv.field_size_limit() 函数将 CSV 文件读取的行长度限制设置为一个很大的值 2**31-1,这样就可以避免 _csv.Error 异常的抛出。

需要注意的是,将 CSV 文件读取的行长度限制设置为很大的值可能会导致内存占用过高,因此应该根据实际情况进行调整。如果你的 CSV 文件行数非常大,可以考虑使用逐行读取的方式来避免一次性读取整个文件内容。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值