因为你曾经
.readline()
第一
这个
codecs.open()
文件已填充行缓冲区;对的后续调用
.readlines()
退货
只有
缓冲线路。
如果你打电话
.readlines()
再一次
,返回其余行:
>>> f = codecs.open(filename, 'r3', encoding='utf-8')
>>> line = f.readline()
>>> len(f.readlines())
7
>>> len(f.readlines())
71
解决办法是不要混在一起
.redline()
和
.readlines()
:
f = codecs.open(filename, 'r3', encoding='utf-8')
data_f = f.readlines()
names_f = data_f.pop(0).split(' ') # take the first line.
这种行为真是个bug;Python开发人员已经意识到了这一点,请参阅
issue 8260
.
另一种选择是使用
io.open()
而不是
编解码器.open()
; 这个
io
库是Python 3用来实现内置的
open()
功能,并且比
codecs
单元