如何在Python中将字符串转换为整数

时间:2014-07-02 16:02:38

标签: python type-conversion

我有一个代码将一个整数转换为一个字符串,将其写入一个文件,但是将它转换回一个整数的代码,所以我可以通过简单的方程式将它放在一起。

我的代码: 写作:

saveposx = open("sevedposx.txt", "w")
saveposy = open("sevedposy.txt", "w")
saveposx.write(str(x))
saveposy.write(str(y))

其中x = 32y = 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))

xy在循环外定义,以允许重写xy

我的代码给了我这个错误:

  File "name_yet_to_come.py", line 399, in <module>
    actposx = int(posx)
ValueError: invalid literal for int() with base 10: ''

由于

2 个答案:

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

如果您想进行IPC,请使用TCP流或Pipe()(或更好的:Queue())。

答案 1 :(得分:-1)

您必须在写入后关闭文件以确保所有内容都已保存。 因此,对于写作部分,您应该添加行

saveposx.close()
saveposy.close()