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

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

问题描述:

命令工程我试图从一个python代码到义和文本分析器程序进行系统调用,我发现下面的一组语句不起作用。它不给我任何错误,但我没有看到任何创建的输出文件。当我在终端上运行相同的命令时,输出文件会被创建。命令通过终端,但不是通过python系统调用

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

http://docs.python.org/2/library/subprocess.html#replacing-壳管道 – 2013-04-07 22:08:09

+0

@ AshwiniChaudhary谢谢,这工作! – ami91 2013-04-07 22:32:19

您需要设置shell=True为shell解释命令,最重要的管道:

call(args, shell=True) 
+0

谢谢!这解决了我的问题 – ami91 2013-04-07 22:33:06