Передача данных из Python во внешнюю команду

Я прочитал все, что есть на subprocess.Popen, но я думаю, что что-то упускаю.

Мне нужно иметь возможность выполнить программу 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, также важно, я должен форматировать в 2 столбца, разделенных пробелом.

Приветствуется любая помощь...

5
задан Shahar 6 August 2012 в 14:10
поделиться