python - 使用 os.startfile() 时程序执行完成后 Python 文件关闭
问题描述
我有一个程序可以生成一个 csv 文件,并且在我正在使用的最后,os.startfile(fileName)
但是由于程序完成执行,打开的文件也会关闭,如果我之后添加一个睡眠也会发生同样的情况,一旦睡眠结束,文件就会加载它再次关闭?
任何帮助,将不胜感激。
解决方案
从os.startfile的文档中:
startfile() 会在关联的应用程序启动后立即返回。没有等待应用程序关闭的选项,也没有办法检索应用程序的退出状态。
使用此功能时,无法让您的脚本等待程序完成,因为您无法知道它何时完成。因为程序是作为 python 脚本的子进程启动的,所以程序将在 python 脚本退出时退出。
由于您没有在问题中确切说明所需的行为是什么,我猜您希望 python 脚本阻塞直到程序完成执行(而不是分离子进程)。有多种方法可以做到这一点。
使用子流程模块
subprocess模块允许您进行子流程调用,该调用在子流程完成之前不会返回。您启动子流程的确切调用很大程度上取决于您的具体情况,但这是一个起点:
subprocess.Popen(['start', fileName], shell=True)
使用输入允许用户关闭脚本
你可以让你的脚本阻塞,直到用户告诉 python 脚本外部程序已经关闭。这可能需要对您的代码进行最少的修改,但我认为这不是一个好的解决方案,因为它取决于用户输入。
os.startfile(fileName)
input('Press enter when external program has completed...')
推荐阅读
- google-sheets-api - Google 电子表格的第一张工作表的 ID 是否始终为 0?
- php - 如何使用 Graph API 评论 Instagram 帖子
- excel - 使用 CountA 时遍历选择
- python - 改进的字谜生成器
- asp.net-core - Anti Forgery Token 检查什么,它实际上检查什么?
- php - 如何修复:两个数据透视表之间的关系
- django - 如何接受表单数据并将其与 Django RESTFramework 中的某些处理结果一起返回?
- flutter - Flutter Text 溢出不适用于第二行
- html - 分享图片 whatsapp 不可见
- java - APK 发布问题,一些属性检测为空