为什么我的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()
将不会产生任何结果。请参阅:。你能解释一下你想用这个代码做什么吗?