Python - 不能运行子进程.exe控制台应用程序,而不是#34; start"等待输入

时间:2017-09-09 20:26:12

标签: python .net windows subprocess console-application

我一直试图解决这个问题几个小时,搜索并尝试了很多东西,但我仍然无法理解需要完成的工作。

我必须自动执行这个名为" GetData.exe"的.NET控制台应用程序。 我正在使用Python 3.5.2,使用子进程模块和Windows 10。

由于控制台应用程序没有接收参数,我必须通过stdin发送预期的输入。我现在完全理解我应该如何处理stdin,stdout或stderr。

但是,如果以这种方式执行应用程序,那么他们只是在执行应用程序时失败了:

exe = 'C:\........\GetData.exe' # pseudo path p = subprocess.run([exe], input=input_string, universal_newlines=True, check=True) print(p)

输出以下错误:

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.Console.GetBufferInfo(Boolean throwOnNoConsole, Boolean& succeeded) at System.Console.get_WindowWidth() at GetData.Program.Main(String[] args)

通过Google搜索此错误,我几乎找不到有关Python子进程模块的相关信息。

subprocess.run返回此(在打印上): CompletedProcess(args='C:\\Users\\......\\GetData.exe', returncode=3762504530)

但是,经过一些谷歌搜索,我发现打字"开始cmd"作为cmd,我想调用的命令加上参数shell=True,使控制台应用程序窗口打开,就像我双击.exe时一样,或者当我从命令行调用它时: / p>

p = subprocess.run("start "+exe, input=input_string, universal_newlines=True, check=True)

让它显示: start <cmd> execution

它保持打开等待我的输入,而我的python代码执行的其余部分完成,而不是至少在打开窗口时,从stdin读取我的输入...

我认为控制台应用程序可能会出现一些错误,迫使它在打开的窗口中执行...我已经看到有关creationflagsstartupinfo,以及我&#的一些问题39;我试过那些使用底层构造函数Popen(更新的subprocess.run方法),但没有成功。

0 个答案:

没有答案