以 10 为底数的 int() 的无效文字:' ',读取文本文件

Invalid literal for int() with base 10: ' ', reading off text file

我正在尝试在 python 中制作文本 game/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

写入文件的代码-

stats = open("Statsheet.txt","w")
stats.write(repr(luck)+ "\n")
stats.write(repr(surv)+ "\n")
stats.close

文本文件的内容-

45
40

我必须使用 "int" 格式的 "luck" 和 "surv" 统计数据,因为稍后在代码中它们将用于数学函数。我导入的模块是 "sys"、"time"、"random" 和 "math",如果有帮助的话。

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

您没有正确使用 raedline。 readline() 中的参数应该是从文件中读取的字节数,而不是要读取的行号。

你想做的是这样的:

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

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

但是有比文本文件更好的选项来存储统计数据等,文本文件的每一行都有意义,例如 SQL、json 等

readline() 的参数在您的情况下是不必要的。只需放下它,代码就会起作用:

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

如果您好奇,statload.readline(2) 会读取前两个字符 (45) 并将文件指针留在 45 之后的换行符之前。换行符是第二次调用 readline() 读取的所有内容,为您提供导致您收到异常的空字符串。

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

另请注意,您在调用 close():

后缺少括号
statload.close()

好像执行了luck = int(statload.readline(2))之后,文件指针就移动到文件末尾了,没有什么可读的了。试试这个:

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