我试图在python中制作文字游戏/ RPG。我得到了
第89行,在 幸存= int(statload.readline(3))ValueError:基数为10的int()的文字无效:''
错误代码,在尝试读取文件时。周围的其他人读得很好。
阅读代码 -
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
我必须拥有&#34;运气&#34;和&#34;幸存&#34; &#34; int&#34;中的统计数据格式,稍后在代码中用于数学函数。我导入的模块是&#34; sys&#34;,&#34; time&#34;,&#34; random&#34;和&#34; math&#34 ;,如果这有帮助的话。< / p>
编辑 - 将变量放入JSON文件,而不是像一个用户建议的那样,现在知道&#34; readline&#34;读取位值。谢谢!
答案 0 :(得分:1)
readline()
的论证在您的案例中是不必要的。只需删除它,代码即可运行:
luck = int(statload.readline())
surv = int(statload.readline())
如果您感到好奇,statload.readline(2)
会读取前两个字符(45
)并将文件指针放在45
后面的换行符之前。该换行符是对readline()
的第二次调用读取的全部内容,为您提供导致您获得异常的空字符串。
当您省略参数时,readline()
将只读取整行,而不管它有多长。
另请注意,在调用close()
后,您将丢失括号:
statload.close()
答案 1 :(得分:0)
看起来,一旦执行luck = int(statload.readline(2)),文件指针就会移动到文件的末尾,而且没有什么可读的了。试试这个:
statload = open("Statsheet.txt","r").read().split('\n')
luck = int(statload[0])
surv = int(statload[1])
答案 2 :(得分:-1)
您正在使用raedline错误。 readline()中的参数应该是从文件中读取的字节数,而不是要读取的行号。
你想要做的是这样的事情:
with open("Statsheet.txt", "r") as file:
stats = file.readlines()
luck = int(stats[0])
surv = int(stats[1])
但是存储统计数据等比文本文件有更好的选择,每行代表一些东西,比如SQL,json等。