使用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工作簿的正确方法是什么?
答案 0 :(得分:0)
让我们看看...。
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,并且可能无法关闭wb。
同样,非常,内容很少。