为什么我的Python代码使indexer:list索引超出范围

为什么我的Python代码使indexer:list索引超出范围,python,python-3.x,Python,Python 3.x,运行代码时,遇到以下错误: 索引器:列表索引超出范围 我的代码有什么问题 fin=open('words.txt') 对于fin中的行: word=line.strip() 如果len(word)>20: 打印(word) 打印(fin.readlines()[1])#错误报告显示在这一行 这是因为在循环结束后读取文件。 使用seek,您可以再次将指针设置到起始位置 fin = open('text_file.txt') for line in fin: word = line.str

运行代码时,遇到以下错误:

索引器:列表索引超出范围

我的代码有什么问题

fin=open('words.txt')
对于fin中的行:
word=line.strip()
如果len(word)>20:
打印(word)
打印(fin.readlines()[1])#错误报告显示在这一行

这是因为在循环结束后读取文件。 使用
seek
,您可以再次将指针设置到起始位置

fin = open('text_file.txt')

for line in fin:
    word = line.strip()
    if len(word) > 20:
        print(word)
fin.seek(0, 0)
print(fin.readlines()[1])
这里有一个链接

现在还不清楚你到底想做什么?但错误应该消失

这是因为在循环结束后读取文件。 使用
seek
,您可以再次将指针设置到起始位置

fin = open('text_file.txt')

for line in fin:
    word = line.strip()
    if len(word) > 20:
        print(word)
fin.seek(0, 0)
print(fin.readlines()[1])
这里有一个链接

现在还不清楚你到底想做什么?但错误应该消失

您正在尝试获取执行结果的第二个元素(从零开始)。默认情况下是不安全的,因为文件只能包含一个字符串。 但在这种特殊情况下,您将在
fin.readlines()
中收到空列表,而不考虑打开文件中的行数,因为您已经阅读了上面的行(使用
for line in fin
循环)。您不能只读取两次,而需要查找开始文件或重新打开文件:

~  echo 1 >> t.txt
~  echo 2 >> t.txt
~  echo 3 >> t.txt
~  python3
两次阅读内容:

>>> with open('t.txt') as f:
...   f.readlines()
...   f.readlines()
...
['1\n', '2\n', '3\n']
[]
寻求开始:

>>> with open('t.txt') as f:
...   f.readlines()
...   f.seek(0)
...   f.readlines()
...
['1\n', '2\n', '3\n']
0
['1\n', '2\n', '3\n']

您正在尝试获取执行
readlines
方法的结果的第二个元素(从零开始)。默认情况下是不安全的,因为文件只能包含一个字符串。 但在这种特殊情况下,您将在
fin.readlines()
中收到空列表,而不考虑打开文件中的行数,因为您已经阅读了上面的行(使用
for line in fin
循环)。您不能只读取两次,而需要查找开始文件或重新打开文件:

~  echo 1 >> t.txt
~  echo 2 >> t.txt
~  echo 3 >> t.txt
~  python3
两次阅读内容:

>>> with open('t.txt') as f:
...   f.readlines()
...   f.readlines()
...
['1\n', '2\n', '3\n']
[]
寻求开始:

>>> with open('t.txt') as f:
...   f.readlines()
...   f.seek(0)
...   f.readlines()
...
['1\n', '2\n', '3\n']
0
['1\n', '2\n', '3\n']

使用上下文管理器处理文件。由于您位于文件末尾,因此
readlines()
将不会产生任何结果。请参阅:。你能解释一下你想用这段代码做什么吗?使用上下文管理器来处理文件。由于您位于文件末尾,因此
readlines()
将不会产生任何结果。请参阅:。你能解释一下你想用这个代码做什么吗?