为何我的Python程序运行时出现IndexError: list index out of range错误?
问题原因
你遇到的IndexError是因为两次调用readlines()导致文件指针耗尽。文件对象的读取是流式的,第一次调用test.readlines()会读取文件所有内容并将指针移到文件末尾,第二次调用时会返回空列表,此时访问索引[1]自然会报错。
修复方案
方案1:一次性读取所有行到列表再操作
先把文件内容全部读入一个列表,再从列表中取对应行转换计算:
test = open("test.txt", "r") lines = test.readlines() num1 = int(lines[0].strip()) # strip()去除换行符等空白字符 num2 = int(lines[1].strip()) print(num1 - num2) test.close() # 手动关闭文件
方案2:逐行读取(用readline())
每次调用readline()读取一行,避免指针耗尽:
test = open("test.txt", "r") num1 = int(test.readline().strip()) num2 = int(test.readline().strip()) print(num1 - num2) test.close()
方案3:推荐用法(with语句自动管理文件)
with语句会在代码块结束后自动关闭文件,更安全简洁:
with open("test.txt", "r") as test: lines = test.readlines() num1 = int(lines[0].strip()) num2 = int(lines[1].strip()) print(num1 - num2)
注意:加上
.strip()是为了去除每行末尾的换行符\n,虽然int()转换时通常会忽略空白,但这个习惯能避免特殊场景下的转换错误。
内容的提问来源于stack exchange,提问作者user23498718
相关产品推荐
相关产品推荐

