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

时间:2016-09-04 10:05:55

标签: python sys

我试图在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;读取位值。谢谢!

3 个答案:

答案 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等。