我有一个奇怪的问题,我不确定为什么会发生。
在游戏中,我输入一个命令(:: pos),它将位置坐标写入.txt文件。当我尝试自动执行此过程(使用win32com键入命令)并读取文件时,将显示先前的coords而不是当前的coords。这没有任何意义,因为我在显示之前更新了坐标:
def add(self):
id = self.myTextInput.text()
shell.AppActivate('App title')
# Update position file
shell.SendKeys('::pos')
shell.SendKeys('{ENTER}')
# Add object
shell.SendKeys('::object ' + id + ' 0')
shell.SendKeys('{ENTER}')
# Read position
with open('.txt file path', 'r') as f:
f = f.read().split()
self.listWidget.addItem(id + ' ' + f[1] + ' ' + f[3] + ' 0')
按下“添加”按钮后执行代码。奇怪的是,如果我创建一个单独的按钮和名为'updatePos'的函数(我在按'add'之前按下),它一切正常,但如果我只是在add中调用updatePos()函数则不起作用。我也尝试过使用sleep来交错命令,但这似乎也很奇怪(在它之前睡觉代码块,不确定它的shell命令是否搞乱它?)。
我认为代码可能在异常的顺序执行?例如。在更新职位之前打开和阅读文本文件 - 但不确定为什么会发生这种情况。
答案 0 :(得分:0)
您需要先关闭文件,然后才能阅读更改。
尝试将f.close()添加到此末尾。