当使用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...')

最新更新