Возможно прочитать возвращаемое значение в команде, выполняющей скрипт Python - PullRequest
0 голосов
/ 08 января 2011

Учитывая командную строку bash:

./getRawStream.jar | ./processRaw.py > product.csv 2> product.stderr

Возможно ли ./processRaw.py найти возвращаемое значение ./getRawStream.jar и отменить остальную часть цепочки? Я пытаюсь избежать использования модуля подпроцесса python любой ценой, потому что конечный вывод ./getRawStream может иметь размер порядка 10 или 100 гигабайт и хочет сократить количество мест, в которые поток попадает в память, прежде чем его фильтруют by processRaw.py

Ответы [ 2 ]

4 голосов
/ 08 января 2011

Это не то, как работают трубы.Каналы имеют дело с вводом и выводом, а не с программами, их генерирующими.

Тем не менее, subprocess также может использовать каналы - если вы передадите stdout=subprocess.PIPE, вы получите поток stdout для процесса, который вы можетечитать постепенно.Конечно, если вы заботитесь о кодах возврата, вам все равно придется подождать, пока первый процесс завершится, что означает, что разницы в буферизации на самом деле не так много - весь вывод первой команды будет буферизован до того, как вы увидитекод возврата.

0 голосов
/ 08 января 2011

Как-то так может помочь:

./getRawStream.jar > stage1.stodout
if [ ... ];
then
    ./processRaw.py < stage1.stodout > product.csv 2> product.stderr
fi
rm -f stage1.stodout
...