使用Windows,我启动命令提示符并运行我的脚本,它将在后台打开一个excel文件。我使用try / except / finally块来捕获异常并最终关闭工作簿,但似乎如果我在命令提示符下(代码完全运行之前)点击红色'X',那么excel工作簿将保持打开状态。
我最好的猜测是代码完全停止执行,无论它在哪里?
这对我来说并不罕见。发生的事情是我意识到我错过了上一步,因此我只想关闭命令提示符和驻留在后台的工作簿。
我最初预计try / except / finally会涵盖这种情况:
try:
xl = win32com.client.Dispatch("Excel.Application")
wb = xl.Workbooks.Open(Filename=file)
# Do stuff
# Close out of command prompt while doing stuff
except Exception as e:
print(e)
finally:
wb.Close(SaveChanges=0) # doesn't seem to close out of the workbook
# when command prompt forcefully closed
当失败时,我在其他地方寻找类似的问题,并尝试了'atexit'模块,这似乎也没有用。
如果用户取消命令提示符,关闭excel工作簿的正确方法是什么?
让我们来看看....
try:
xl = win32com.client.Dispatch("Excel.Application")
wb = xl.Workbooks.Open(Filename=file)
# Do stuff
# Close out of command prompt while doing stuff
except Exception as e:
print(e)
finally:
wb.Close(SaveChanges=0) # doesn't seem to close out of the workbook
# when command prompt forcefully closed
这个问题需要更多的背景,但从我可以告诉的尝试这个:
import os
cmd = os.system("start /wait cmd /c {command}")
try:
xl = win32com.client.Dispatch("Excel.Application")
wb = xl.Workbooks.Open(Filename=file)
# Do stuff
os_close = os.close()
try:
os_close
wb.close(SaveChanges=0)
except NameError:
continue
except Exception as e:
print(e)
'finally'在那里工作得不好,因为计算机不知道何时执行finally并且可能不会关闭wb。
再次,非常少的背景。