readlines() 在使用 readline() 后无法读取行
下面这段简单的代码用来读取一个CSV文件,并返回文件的行数。从输出结果来看,这个文件总共有501行。
>>> import codecs
>>> f = codecs.open("tmp.csv", "r", "utf_8")
>>> print len(f.readlines())
501
但是,如果我在使用readlines()之前插入一个readline(),那么readlines()就无法读取到文件的最后一行。
>>> import codecs
>>> f = codecs.open("tmp.csv", "r", "utf_8")
>>> f.readline()
>>> print len(f.readlines())
1
我的代码中有没有什么基本的错误?我该如何将readline()和readlines()这两个函数结合使用?(其实在我的实际程序中并不需要混合使用这两个函数,但我只是好奇…)
你可以在这里下载这个文件: https://dl.dropboxusercontent.com/u/16653989/tmp/tmp.csv
1 个回答
3
这和 codecs
模块有关。因为当你用普通的 Python open
语句做同样的事情时,它的表现是正常的:
f = open('tmp.csv')
f.readline()
>>> print len(f.readlines())
500