我写了一个函数,当我的程序完成它的工作时调用它。
def allDone(self, event):
dlg = wx.MessageBox("All done!", "Ask Alfred", wx.OK | wx.ICON_INFORMATION)
os.unlink(self.fpath)
os.rename(self.temp, self.fpath)
self.pathBox.Clear()
然而,它没有按预期工作。它应该删除原始文件,然后将临时文件重命名为原始文件路径。
相反,它只执行unlink,删除self.fpath中的文件。
我得到的确切错误是:
File "G:/AskNorbert/finder.py", line 151, in allDone
os.rename(self.temp, self.fpath)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
答案 0 :(得分:0)
在尝试重命名之前,确认确定您已在临时文件上调用flush()
然后调用close()
,以确保您没有锁定它。
同样值得调用time.sleep(0.2)
,让操作系统有时间在close
之后和rename
之前完成任务。