错误32:无法在Python脚本中重命名文件

时间:2015-06-17 20:58:31

标签: python multithreading operating-system

这是我的错误:

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)

1 个答案:

答案 0 :(得分:0)

该文件需要在所有进程中关闭,即使是" Python.exe"在你移动它之前。

这个question似乎需要让这个xlrd对象超出范围,以便在您尝试移动和重命名文件之前将其自行关闭。

如果您的线程中有对该文件的引用,那么您应该尝试将该变量设置为None,以便在处理完成时删除对文件对象的引用。希望这能解决您的问题