基本上我正在尝试阅读最后几行。我感到困惑的是导致这个错误的原因:
nrows = 10
with open(filename, "r") as f:
for ii in xrange(-nrows, 0, 1):
last_line = f.readlines()[ii].strip().split(",")
当我在IDE中尝试它时,当我使用纯数字时没有问题,例如:
with open(filename, "r") as f:
last_line = f.readlines()[-10].strip().split(",")
不知何故看起来xrange
生成的索引无法“使用”。有办法解决这个问题吗?
非常感谢您的关注和时间!
答案 0 :(得分:2)
它在你的第二个例子中起作用的原因是因为你只调用了readlines()一次。
你只能读取一次文件,所以一旦你读完所有行,文件迭代器指向EOF并返回空列表,这将使你的[ii]尝试失败。
要多次读取文件,必须在每一轮之后调用file.seek(0)以将迭代器再次移动到开头,但将行读入变量会更有效。
您可能对file like objects感兴趣,也可能会考虑slice而不是xrange