以10为基数的int()的文本无效:“”,正在读取文本fi

2024-09-29 19:28:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python制作一个文本游戏/rpg。我得到了一个

line 89, in surv = int(statload.readline(3))

ValueError: invalid literal for int() with base 10: ''

尝试读取文件时的错误代码。周围的其他人读得很好。在

正在读取代码-

statload = open("Statsheet.txt","r")  
luck = int(statload.readline(2))
surv = int(statload.readline(3))
statload.close

写入文件的代码-

^{pr2}$

文本文件的内容-

45
40

我必须有“int”格式的“luck”和“surv”统计信息,就像后面的代码中使用的数学函数一样。我导入的模块是“sys”、“time”、“random”和“math”,如果有帮助的话。在

Edit-将变量放入JSON文件中,正如一位用户建议的那样,现在知道“readline”读取位值。谢谢!在


Tags: 文件代码in文本游戏readlinelinerpg
3条回答

在您的例子中,readline()的参数是不必要的。只要放下它,代码就会工作:

luck = int(statload.readline())
surv = int(statload.readline())

如果您好奇,statload.readline(2)读取前两个字符(45),并将文件指针放在45后面的新行之前。对readline()的第二次调用只读取这一行,给您一个空字符串,该字符串会导致您得到异常。在

当您省略参数时,readline()将简单地读取整行,而不管它有多长。在

还请注意,调用close()后缺少括号:

^{pr2}$

您错误地使用了raedline。readline()中的参数应该是要从文件中读取的字节数,而不是要读取的行号。在

你想做的事情是这样的:

with open("Statsheet.txt", "r") as file:
    stats = file.readlines()

luck = int(stats[0])
surv = int(stats[1])

但是有更好的方法来存储统计信息等,而不是文本文件,每一行都意味着SQL、json等

它看起来就像执行luck=int之后(statload.readline文件(2) ),文件指针移动到文件末尾,没有其他内容可读取。试试这个:

statload = open("Statsheet.txt","r").read().split('\n') 
luck = int(statload[0])
surv = int(statload[1])

相关问题 更多 >

    热门问题