我的程序复制一个excel模板,用xlwings编辑它,并且在处理完成后应移动文件夹。
我正在使用QThread在后台执行此操作,以防止GUI冻结。
当前,我在移动文件时遇到严重错误,因为文件在移动之前尚未完全完成处理。我知道这一点,因为在我再次尝试保存按钮之后,它将完成所需的操作。
我尝试使用时间方法休眠几秒钟,直到过程完成为止,但这花费的时间太长。
错误:
这不是我的完整代码,因为我有成千上万的代码行,我只是在演示如何运行函数。
class SaveThread(QtCore.QThread):
saveSignal = pyqtSignal()
def __init__(self, parent = None):
super().__init__(parent)
def run(self):
newcase = newcaseList[-1]
book = xw.Book(r'{0}\Template_VS.xlsx'.format(TemplateDirectory[-1]))
#do something with excel sheet
book.save(r'{0}\{1}\{1}.xlsx'.format(SelectedDirectory[-1], newcase))
self.saveSignal.emit()
class TabPage(QWidget, Ui_Form):########Pulls Ui from another class
'GUI for stage information - ex. sheet1, 2'
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.pushButton_3.clicked.connect(self.SaveRun)
self.saveThread = SaveThread()
self.saveThread.finished.connect(self.moveFolder)
saveDirectory = []
appList = []
newcaseList = ['C:\\Workspace\\']
InitialDirectory = ['C:\\Workspace\\Test\\']
def moveFolder(self):
appList[-1].kill()
newcase = newcaseList[-1]
shutil.move('{0}\{1}'.format(InitialDirectory[-1], newcase), '{0}/{1}'.format(saveDirectory[-1], newcase)) ### Error occurs here because file isn't done processing.
def SaveRun(self):
'Save Run File to directory'
directory = str(QFileDialog.getExistingDirectory(self, "Select Directory"))
saveDirectory.append(directory)
app = xw.App(visible=False)
appList.append(app)
我希望它等到excel工作表完全完成处理后再移动,如何确保它没有time.sleep方法呢?