首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“列出超出范围的索引”,尽管有正确的行号

“列出超出范围的索引”,尽管有正确的行号
EN

Stack Overflow用户
提问于 2020-05-20 18:42:08
回答 2查看 90关注 0票数 0

我想尽可能长时间不要在这里张贴愚蠢的问题,但我不太确定如何自己解决这个问题。我试图读取文件中的特定行(行号根本不改变),但我得到了错误。我可以通过迭代来打印文件中的每一行,但是读取我自己需要的特定行(或除第0行以外的任何一行)会抛出错误,尽管它在以前的版本中有效(最近的更改只是将我需要的行向下移动1,我根据需要调整了行号)。

此错误发生在函数的此区域:

代码语言:javascript
复制
with open("wallet.txt","r") as file:
    rawcurrency = file.readlines()[0]
    linesplit = rawcurrency.split(": ")
    currency = linesplit[1]
    rawbalance = file.readlines()[3]
    linesplit = rawbalance.split(": ")
    global balance
    balance = linesplit[1]

这一行抛出错误:

rawbalance = file.readlines()[3]

我从外观中读取的文件是这样的:

代码语言:javascript
复制
Currency used: £
Creation Date: 20/05/2020 19:28:31
Starting Wallet Amount = 500.0
Balance: 500.0

如果解决办法很简单,我事先很抱歉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-20 18:57:27

正如DYZ所指出的,你读了两遍。无论如何,一个更简单、更直接的解决方案:

代码语言:javascript
复制
import linecache
...
raw_currency = linecache.getline("wallet.txt", 1)  # Get line 1
raw_balance =  linecache.getline("wallet.txt", 4)  # Get line 4
...
票数 1
EN

Stack Overflow用户

发布于 2020-05-20 18:49:17

问题是函数readlines()读取整个文件并返回文件中行的列表。你给它打的第一个电话,

file.readlines()[0]

因为它读取整个文件并访问列表的第一个索引,因此它适合您,这是您实际需要的行。你给它打的第二个电话,

file.readlines()[3]

抛出一个异常,因为它从上一次调用(即文件结束)中到达的位置读取整个文件,这意味着它返回一个空列表,因为没有更多的行要读取。然后尝试访问列表中的第三个索引,该索引不存在,因此出现异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61920540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档