LINUX.ORG.RU

[python] subprocess communicate()


0

0

В скрипте открываю подпроцесс:
coolproc = subprocess.Popen("coolprog", stdin=subprocess.PIPE,\
stdout=subprocess.PIPE, stderr=subprocess.PIPE)

coolprog - это клевая прога, которая забирает из stdin данные из скрипта, затем в stdout отдает, затем забирает, затем отдает... И так много-много раз.
Скрипт должен соответсвенно в нее писать и читатать. Много раз, поочередно. Как это сделать?
coolproc.communicate(sendstring) - отправляет sendstring и ждет когда программа завершиться. А как отправить данные и забить? Или прочитать данные в цикле, пока ключевое слово не встретится

[python] subprocess communicate()

Подозреваю что в coolproc.stdin писать, cooproc.stdout читать.

true_admin ★★★★★ ()
Ответ на: [python] subprocess communicate() от nbdarvin

[python] subprocess communicate()

Ждёт, пока в stdout не появится что-нибудь, что можно прочитать. Ищи как делать асинхронное I/O.

devinull ★★ ()

[python] subprocess communicate()

все получилось. бага была в другом

nbdarvin ()
Ответ на: [python] subprocess communicate() от true_admin

[python] subprocess communicate()

Из питоновской доки:

Warning

Use communicate() rather than .stdin.write, .stdout.read or .stderr.read to avoid deadlocks due to any of the other OS pipe buffers filling up and blocking the child process.

provaton ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.