0

所以我有一个通过 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 中的文件名,并制作了一个临时副本,然后重命名。

4

0 回答 0