命令在终端中可以运行,但在Python系统调用中无法运行。

3

我正在尝试从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
http://docs.python.org/2/library/subprocess.html#replacing-shell-pipeline - Ashwini Chaudhary
1个回答

4

您需要设置shell=True以便Shell解释命令,特别是管道符号:

call(args, shell=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接