Python中获取CSV第一列长度的最优方法?遇_csv.Error错误
Python获取CSV文件第一列长度的正确方法及优化
错误原因及修复
你遇到的_csv.Error是因为用**二进制模式('rb')**打开文件,csv.reader要求读取文本流而非字节流。只需将文件打开模式改为'r'(Python默认文本模式,也可写'rt'),就能解决该错误。
原代码的问题
你原代码中zip(*reader)会将整个CSV文件的所有行加载到内存中再提取第一列,对于大文件来说会占用过多内存,并非最优解。
最优实现方法
最优方式是逐行读取文件,仅统计第一列的行数,无需加载整个文件到内存,内存占用极低,适配各种大小的CSV:
import csv first_col_count = 0 with open('export_U43V_WIRKNETZ.csv', 'r', newline='') as f: reader = csv.reader(f) # 若CSV包含表头,需跳过表头行(不需要则删除此行) next(reader) for row in reader: # 跳过空行,避免影响计数 if row: first_col_count += 1 print(first_col_count)
另一种简洁高效的写法
用生成器表达式实现,同样是逐行处理,内存友好:
import csv with open('export_U43V_WIRKNETZ.csv', 'r', newline='') as f: reader = csv.reader(f) # 按需跳过表头 next(reader) first_col_count = sum(1 for row in reader if row) print(first_col_count)
内容的提问来源于stack exchange,提问作者Jozef Bezák
相关产品推荐
相关产品推荐

