因为您.readline()
首先 使用,所以codecs.open()
文件已填充了行缓冲区;随后的调用仅.readlines()
返回缓冲的行。 __
如果.readlines()
再次 调用,则返回其余行:
>>> f = codecs.open(filename, 'r3', encoding='utf-8')
>>> line = f.readline()
>>> len(f.readlines())
7
>>> len(f.readlines())
71
解决方法是不要混合使用.readline()
和.readlines()
:
f = codecs.open(filename, 'r3', encoding='utf-8')
data_f = f.readlines()
names_f = data_f.pop(0).split(' ') # take the first line.
这种行为确实是一个错误。Python开发人员已意识到这一点,请参阅问题8260。
另一种选择是使用io.open()
代替codecs.open()
; 该io
库是Python 3用于实现内置open()
功能的库,比该codecs
模块更强大,更通用。