[英]IndexError : list index out of range when retrieving text from a file
我正在尝试在python中创建测验,并且我需要从外部文本文件中检索多个问题。 我设法成功检索了第一个问题,但是在尝试检索第二个问题时出现“列表索引超出范围”错误。
这就是我当前代码的一部分。
if choice1 == "CH":
choice2 = input ("Would you like to do the easy, medium or hard questions ?").lower()
if choice2 == "easy":
load_profile = open("chemistryquiz.txt","r")
question1 = load_profile.read().splitlines()[4]
print (question1)
question2 = load_profile.read().splitlines()[5]
print (question2)
如果我对问题2提出任何评论,则该程序可以正常运行。哪里出错了? PS,我检查了文本文件,并确保行号是5,我知道您使用python编程时从0开始计数。
另外,这些是chemistryquiz.txt的内容
Chemistry Quiz :
Easy :
1) What is the chemical symbol of Carbon ? A: C B: Ca
2) What is the weight of an electron ? A: 0 B: 0.1
让我们逐步完成:
load_profile = open("chemistryquiz.txt","r")
该文件已打开; 并且您有一个文件句柄load_profile 。 文件书签位于文件的开头。
question1 = load_profile.read().splitlines()[4]
您已经阅读了整个文件,将其分成几行,并将第5行分配给question1 。
print (question1)
question2 = load_profile.read().splitlines()[5]
由于书签仍位于文件末尾,因此read()仅返回EOF。 分割线没有任何用处。 没有元素5. KABOOM! 。
返回到从文件读取行的文本。 例如 ...
with open("chemistryquiz.txt","r") as load_profile:
for input_line in load_profile:
# This loop will give you the file, one line at a time.
您的问题是您多次调用load_profile.read()
。 每次您调用它时,它都会从任何先前的文件读取功能停止的地方开始读取。 但是第一个调用读取了整个文件,因此第二个调用没有读取的内容。 它返回一个空字符串,而splitlines()
返回一个空列表。
只需读取一次文件。
lines = load_profile.read().splitlines()
question1 = lines[4]
question2 = lines[5]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.