我读过了subprocess.Popen上的所有内容,但我想我错过了一些东西。将数据从python传输到外部命令
我需要能够执行一个unix程序,它从python脚本中创建的列表读取数据流,并将该程序的结果写入文件。从bash提示符开始,我始终没有问题,但现在我正试图从一个python脚本内预处理一些二进制文件和大量数据,然后进入这个阶段。
让我们看看一个简单的例子不包括所有的预处理:
import sys
from pylab import *
from subprocess import *
from shlex import split
# some arbitrary x,y points
points = [(11,31),(13,33),(15,37),(16,35),(17,38),(18,39.55)]
commandline = 'my_unix_prog option1 option2 .... > outfile'
command = split(commandline)
process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
print process.communicate(str(points))
这将在bash被执行的方式是:
echo "11 31
13 33
15 37
16 35
17 38
18 39.55" | my_unix_prog option1 option2 .... > outfile
的方式中的数据被馈送到UNIX PROG也很重要,我应该格式化为2列,用空格分隔。
任何帮助表示赞赏...
在'command'中,您将输出重定向到'outfile',但是您尝试使用'communic'将其读入到您的程序中。你想在哪里输出? – 2012-08-06 14:16:07
使用'>'不是将输出重定向到文件的方式,请参阅此答案:http://stackoverflow.com/questions/8902206/subprocess-popen-io-redirect – Dhara 2012-08-06 14:20:06