这是我的错误:
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
当我完成其长时间运行的过程时,我从一个工作线程调用下面的函数。它会停止线程,然后在显示对话框并重命名文件之前给它10秒。 "解锁"显示该文件仅在Python.exe中打开。
def allDone(self, event):
myClass.worker.stop()
for i in range(0,10):
time.sleep(1)
print(i)
dlg = wx.MessageBox("All done!", "Ask Alfred", wx.OK | wx.ICON_INFORMATION)
os.rename(self.tempf, self.tempf+"123.xls")
self.Destroy()
通过下面的工作线程中的xlrd方法在代码中打开文件:
rbook=xlrd.open_workbook(self.file)
sheet = rbook.sheet_by_index(0)
wbook = copy(rbook)
答案 0 :(得分:0)
该文件需要在所有进程中关闭,即使是" Python.exe"在你移动它之前。
这个question似乎需要让这个xlrd对象超出范围,以便在您尝试移动和重命名文件之前将其自行关闭。
如果您的线程中有对该文件的引用,那么您应该尝试将该变量设置为None
,以便在处理完成时删除对文件对象的引用。希望这能解决您的问题