在窗口应用程序上获取命令执行的输出
Getting output of command execution on windowed app
我已经创建了一个 Python 脚本并使用 PyInstaller 将其编译成一个 exe 文件。在此过程中,我指定了 -w 选项来获取没有任何控制台的应用程序。
除了使用 popen 执行命令外一切正常:
mout = subprocess.Popen(['ls','C:\'])
此行生成异常 [Error 6] The handle is invalid
。
我试过添加参数
stdout=subprocess.PIPE, stderr=subprocess.PIPE
但它仍然无法正常工作。我认为这是因为主进程没有分配任何控制台。我想执行命令但不打开任何 shell,它必须对用户透明。
有什么选择吗?
这应该可以解决您的问题。
proc = subprocess.Popen(['ls','C:\'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, creationflags=CREATE_NO_WINDOW)
我已经创建了一个 Python 脚本并使用 PyInstaller 将其编译成一个 exe 文件。在此过程中,我指定了 -w 选项来获取没有任何控制台的应用程序。
除了使用 popen 执行命令外一切正常:
mout = subprocess.Popen(['ls','C:\'])
此行生成异常 [Error 6] The handle is invalid
。
我试过添加参数
stdout=subprocess.PIPE, stderr=subprocess.PIPE
但它仍然无法正常工作。我认为这是因为主进程没有分配任何控制台。我想执行命令但不打开任何 shell,它必须对用户透明。
有什么选择吗?
这应该可以解决您的问题。
proc = subprocess.Popen(['ls','C:\'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, creationflags=CREATE_NO_WINDOW)