所以我有一个通过 xlutils 库访问的 XLS 文件。当我的程序完成它的过程时,它应该删除原始文件并将临时文件重命名为原始文件。excel文件中的数据正在输入一个网站,并且正在从网站中提取数据,然后将其写入excel工作表。所有这一切都很好,但是,当它完成重命名临时文件时会出现问题。
临时文件只是通过以下函数制作的副本:
def rename(self, fpath):
tempf=os.path.splitext(fpath)[0]
tempf=tempf + "-output" + ".xls"
shutil.copyfile(fpath,tempf)
return tempf
我创建了一个函数,当用于输入数据和提取的 for 循环完成时调用该函数:
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)
使用 Process Explorer,它显示临时文件仍然在 python.exe 中打开。我不知道如何关闭文件并释放内存,因为它是通过以下方式打开的:
rbook=open_workbook(file)
sheet = rbook.sheet_by_index(0)
其中文件将简单地替换为 self.temp 是什么。
当按下 GO 按钮时,会发生以下情况:
def onGo(self, event):
fpath=self.pathBox
fpath=fpath.GetValue()
self.fpath=fpath
temp=myClass.rename(fpath)
self.temp=temp
openFile(temp)
def rename(self, fpath):
tempf=os.path.splitext(fpath)[0]
tempf=tempf + ".alf"
shutil.copyfile(fpath,tempf)
return tempf
因此,获得了名为“pathBox”的 SearchCtrl 中的文件名,并制作了一个临时副本,然后重命名。