Python中简单“readlines”操作的索引超出范围

Python中简单“readlines”操作的索引超出范围,python,python-2.7,Python,Python 2.7,基本上我是在读最后几行。我很困惑是什么导致了这个错误: 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.readlin

基本上我是在读最后几行。我很困惑是什么导致了这个错误:

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
生成的索引似乎无法“使用”。有办法解决这个问题吗


非常感谢您的关注和时间

它在第二个示例中起作用的原因是您只调用了一次readlines()

您只能读取文件一次,所以一旦您读取了所有行,文件迭代器将指向EOF并返回空列表,这将使您的[ii]尝试失败

要多次读取文件,您必须在每一轮之后调用file.seek(0)以再次将迭代器移动到起始位置,但将行读入变量将更加有效


您可能感兴趣,也可以考虑替代xLange

保存变量<>代码> f读入()/<代码>,然后执行索引。文件对象是迭代器,在第一次调用
.readlines()
之后,其余调用将返回一个空的list.Nice。谢谢你的帮助!!