首页 > 解决方案 > 在窗口化应用程序上获取命令执行的输出

问题描述

我创建了一个 Python 脚本并使用 PyInstaller 将其编译成一个 exe 文件。在此过程中,我指定了 -w 选项来获取没有任何控制台的应用程序。

除了使用 popen 执行命令外,一切正常:

mout = subprocess.Popen(['ls','C:\'])

此行生成异常[Error 6] The handle is invalid

我已经尝试添加参数 stdout=subprocess.PIPE, stderr=subprocess.PIPE,但它仍然无法正常工作。我认为这是因为主进程没有分配任何控制台。我想执行命令但不打开任何外壳,它必须对用户透明。

有什么选择吗?

标签: pythonoutputpopenwindowed

解决方案


这应该可以解决您的问题。

proc = subprocess.Popen(['ls','C:\\'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, creationflags=CREATE_NO_WINDOW)

推荐阅读