python - Python,如果用户过早关闭命令提示符,如何关闭 Excel 工作簿?
问题描述
使用 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。
同样,上下文很少。
推荐阅读
- c# - 多语言内容项目 sitefinity
- java - 使用 Java 8 Streams 修改列表内的字符串列表
- flutter - NestedScrollView TabBar下的Flutter Gridview不起作用
- javascript - 为 google chrome 扩展执行内联脚本
- excel - 遍历 Pivot 字段返回不存在的值
- mongodb - MongoDB 仅在项目不存在时推送项目
- notepad++ - Notepad ++中如何删除没有字符串的行
- python - SSH 会话(Python 对象)贯穿剧本的整个生命周期
- shell - 使用 UNIX 如何将 3 个文件合并为一个文件,即(头文件、详细文件和尾文件)
- docker - Nginx 反向代理在本地主机上工作,但在 K8S 上不工作