首页 > 解决方案 > 使用 os.startfile() 时程序执行完成后 Python 文件关闭

问题描述

我有一个程序可以生成一个 csv 文件,并且在我正在使用的最后,os.startfile(fileName)但是由于程序完成执行,打开的文件也会关闭,如果我之后添加一个睡眠也会发生同样的情况,一旦睡眠结束,文件就会加载它再次关闭?

任何帮助,将不胜感激。

标签: pythonpython-os

解决方案


从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...')

推荐阅读