0

したがって、xlutils ライブラリを介してアクセスされる XLS ファイルがあります。私のプログラムがそのプロセスを終了したら、元のファイルを削除し、一時ファイルの名前を元のファイルに変更することになっています。ExcelファイルのデータはWebサイトに入力されており、Webサイトからのデータが抽出されて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)

file は、単純に 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