如何读取CSV文件前1000条记录?切片方法尝试失败
解决CSV文件仅读取前N条记录的问题
嘿,这个问题我之前也踩过坑!你原来的代码失败是因为csv.reader()返回的是一个迭代器,而不是列表——迭代器不支持直接用[:1000]这种切片语法。下面给你几个实用的解决方案:
方法1:用itertools.islice(最简洁高效)
islice可以直接从迭代器中截取指定数量的元素,不需要一次性加载所有数据,非常适合处理大文件:
import csv from itertools import islice entries = [] with open('mnist_train.csv', 'r') as f: mycsv = csv.reader(f) # 从迭代器中取前1000条记录 for row in islice(mycsv, 1000): entries.append(row)
方法2:手动计数循环(无需额外导入)
如果不想引入新模块,手动计数并在达到目标后跳出循环也很简单:
import csv entries = [] with open('mnist_train.csv', 'r') as f: mycsv = csv.reader(f) record_count = 0 for row in mycsv: entries.append(row) record_count += 1 # 达到1000条就停止读取 if record_count >= 1000: break
方法3:用Pandas(适合数据处理场景)
如果你已经在使用Pandas处理数据,这个方法会更简洁,Pandas的read_csv直接支持指定读取行数:
import pandas as pd # nrows指定读取前1000行,header=None表示CSV没有表头 df = pd.read_csv('mnist_train.csv', nrows=1000, header=None) # 转换为嵌套列表 entries = df.values.tolist()
内容的提问来源于stack exchange,提问作者user8802614
相关产品推荐
相关产品推荐

