子:PyDev的控制台与CMD.EXE(subprocess: PyDev console vs.

2019-09-16 15:10发布

我想打电话给使用subprocess.call蟒蛇的过程如下图所示:

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的一个问题,在控制台无法处理从过程覆盖线的标准输出。 代码运行从IDLE罚款。 仍在寻找PyDev的修复...

Answer 1:

我认为你有这个问题,因为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推出它的东西...



文章来源: subprocess: PyDev console vs. cmd.exe