使用readlines()打印时出现IndexError

时间:2019-01-24 22:32:47

标签: python python-3.x

当尝试从文本文件中打印一行时,我一直遇到索引错误。我是python的新手,我仍在尝试学习,因此,如果您可以对我耐心等待,我将不胜感激。如果我还有其他需要,请告诉我!

回溯显示为

...
    print(f2.readlines()[1]):
IndexError: list index out of range

尝试打印第2行(...[1])时,出现此错误。

这是当前的脚本。

with open("f2.txt", "r") as f2:
    print(f2.readlines()[1])

文件中有3行文字。

f2.txt的内容

peaqwenasd
lasnebsat
kikaswmors

2 个答案:

答案 0 :(得分:0)

似乎f2.seek(0)对于解决此问题很有必要。

with open("f2.txt", "r") as f2:
    f2.seek(0)
    print(f2.readlines()[1])

答案 1 :(得分:0)

您尚未提供解决问题所需的所有代码,但给定的症状指向多次调用readlines

阅读文档:readlines()读取整个文件并返回内容列表。因此,文件指针位于文件的末尾。如果此时再次调用readlines(),它将返回一个空文件。

您在给我们提供的代码之前显然已经打了readlines()电话。 seek(0)会将文件指针重置为文件的开头,而您第二次正在读取整个文件。

有许多教程向您展示了遍历文件内容的规范方法。我强烈建议您使用其中之一。例如:

with open("f2.txt", "r") as f2:
    for line in f2.readlines():
        # Here you can work with the lines in sequence

如果您需要按非顺序顺序处理行,则

with open("f2.txt", "r") as f2:
    content = list(f2.readlines())
    # Now you can access content[2], content[1], etc.