【发布时间】:2012-05-01 10:48:54
【问题描述】:
我正在尝试使用 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 中的一个问题,控制台无法处理来自进程覆盖行的标准输出。代码在 IDLE 中运行良好。仍在寻找 PyDev 的修复程序...
【问题讨论】:
-
在文件路径的任何地方将双 \\ 更改为单个
/是否有帮助? -
不,/ 给出相同的结果。
-
你能把
shell=True加到call()吗 -
添加
shell=True也会得到相同的结果。 -
如果将 in 和 out 文件合并到一个 arg 中会发生什么:
call([exePath, '%s %s' % (inPath, outPath)])
标签: python cmd subprocess pydev