subprocess:PyDev控制台与cmd.exe

时间:2012-04-19 20:31:15

标签: python cmd subprocess pydev

我试图使用subprocess.call从python调用进程,如下所示:

from subprocess import call

exePath = 'C:\\Test\\EXE.exe'
inPath = 'C:\\Test\\IN.in'
outPath = 'C:\\Test\\OUT.out'
call([exePath, inPath, outPath])

这会从EXE.exe打印几行,然后是"句柄无效" - 但是作为一个字符串,而不是一个错误,这让我觉得它可能是来自EXE.exe的消息:

Unzipping Solution...
0.0%                       The handle is invalid.

但是当我打开cmd.exe并粘贴时:

C:\Test\EXE.exe C:\Test\IN.in C:\Test\OUT.out

它工作正常。

有人能指出我正确的方向吗?

谢谢!

我在Windows 7上运行Python 2.7 64位。

修改

现在看起来像PyDev中的问题,控制台无法处理来自进程覆盖行的stdout。 IDLE的代码运行良好。仍在寻找PyDev的修复......

1 个答案:

答案 0 :(得分:3)

我认为你有这个问题,因为PyDev不是一个真正的终端(即:在Python中,os.isatty()从PyDev运行时会返回False。)

如果exe真的依赖于终端,那么目前PyDev可以做的并不多......

目前,您可以通过Python进行调用:

在Windows中:

popen = subprocess.Popen(['myexe', 'params'], creationflags=subprocess.CREATE_NEW_CONSOLE)
popen.wait()

在Linux中(由于CREATE_NEW_CONSOLE不可用):

args = ['xterm', '-e'] + ['myexe', 'params']
popen = subprocess.Popen(args)
popen.wait()

这样无论谁在调用它都能正常工作:)

我认为Aptana Studio确实有一个实际的终端更换,但没有PyDev集成来启动它...

相关问题