readlines() 在使用 readline() 后无法读取行

2 投票
1 回答
1910 浏览
提问于 2025-04-18 05:23

下面这段简单的代码用来读取一个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

撰写回答