【发布时间】:2014-06-18 00:04:37
【问题描述】:
我有一个简单的测试 CSV 文件:
1,2,3
4,5,6
7,8,9
10,11,12
我正在尝试阅读前两行,返回一行,然后重新阅读下一行:
import csv
with open('test.csv', 'r') as f:
reader = csv.reader(f)
pos = f.tell()
print 'pos: {0}'.format(pos)
print reader.next()
pos = f.tell()
print 'pos: {0}'.format(pos)
print reader.next()
f.seek(pos)
pos = f.tell()
print 'pos: {0}'.format(pos)
print reader.next()
pos = f.tell()
print 'pos: {0}'.format(pos)
但是,文件在第一次调用next() 时被完全读取:
pos: 0
['1', '2', '3']
pos: 27
['4', '5', '6']
pos: 27
Traceback (most recent call last):
File "<stdin>", line 15, in <module>
StopIteration
我尝试设置buffering=0,但出现了同样的问题。如果我明确使用文件对象来执行readline(),一切正常。有什么方法可以防止 csv 阅读器在第一次 next() 调用时读取多行?
【问题讨论】: