【发布时间】:2014-07-02 16:02:38
【问题描述】:
我有将整数转换为字符串以将其写入文件的代码,但是将其转换回整数以便我可以通过简单的方程式进行运算的代码不起作用。
我的代码: 写作:
saveposx = open("sevedposx.txt", "w")
saveposy = open("sevedposy.txt", "w")
saveposx.write(str(x))
saveposy.write(str(y))
x = 32 和 y = 32 也是如此
阅读:
readposx = open("sevedposx.txt", "r")
readposy = open("sevedposy.txt", "r")
posx = readposx.read(50)
posy = readposy.read(50)
actposx = int(posx)
actposy = int(posy)
actpos = ((actposx - 2), (actposy - 2))
x 和 y 在循环外部定义,以允许重写 x 和 y。
我的代码给了我这个错误:
File "name_yet_to_come.py", line 399, in <module>
actposx = int(posx)
ValueError: invalid literal for int() with base 10: ''
谢谢
【问题讨论】:
-
您是否关闭过
saveposx和saveposy?您需要这样做才能提交对文件的更改。 -
这可能是因为许多不同的问题,所以这里有一些调试建议:检查文件
sevedposx.txt和sevedposy.txt是否确实存在并且实际上包含您期望它们的内容。在posx=readposx.read(50)之后立即插入print(repr(posx)),对于posy也是如此;你得到你期望的结果了吗? -
它们都存在并且都包含 32,并且它们打印正确
-
你的意思是,在
actposx = int(posx)之前添加print "DEBUG:", posx会打印DEBUG: 32然后引发异常? -
不,它只是在 python 解释器中打印 DEBUG: 32,当我将它写入程序时它打印然后返回错误