命令通过终端工作,但不通过python系统调用

时间:2013-04-07 22:06:08

标签: python system subprocess pipe

我正在尝试从python代码到Boxer文本解析器程序进行系统调用,我发现以下一组语句不起作用。它没有给我任何错误,但我没有看到任何输出文件创建。当我在终端上运行相同的命令时,会创建输出文件。

from subprocess import call
candcStr = 'echo "Every Man Walks" | /home/candc-1.00/bin/candc --models /home/candc-1.00/models/boxer --output /tmp/test.ccg' 
args = shlex.split(candcStr)
call(args)

当我运行上面的代码时,控制台显示

Every Man Walks | /home/candc-1.00/bin/candc --models /home/candc-1.00/models/boxer --output /tmp/test.ccg

好像管道重定向不起作用。有谁知道我怎么解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:4)

您需要为shell设置shell=True来解释命令,并且大部分都是管道:

call(args, shell=True)