我有一个代码将一个整数转换为一个字符串,将其写入一个文件,但是将它转换回一个整数的代码,所以我可以通过简单的方程式将它放在一起。
我的代码: 写作:
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: ''
由于
答案 0 :(得分:0)
错误消息表明文件为空。可能输出文件变量仍然在范围内被引用/,或者还没有被垃圾收集。
使用
with open(...) as f:
pass # do something with f here
让文件在范围的末尾自动刷新并关闭。
或者只是使用f.close()
明确关闭它们,但考虑使用try finally
块。
您也可以在此范围内打开多个文件,如How can I open multiple files using "with open" in Python?中所述。
with open('a', 'w') as a, open('b', 'w') as b:
pass # do something with a and b here
答案 1 :(得分:-1)
您必须在写入后关闭文件以确保所有内容都已保存。 因此,对于写作部分,您应该添加行
saveposx.close()
saveposy.close()