Я пытаюсь отправить выходные данные одного процесса в качестве входных данных другому процессу, используя следующий блок кода:
p1 = Popen(command, stdout=PIPE)
p2 = Popen(dgxmcmd, stdin=p1.stdout, stdout= PIPE, stderr = PIPE)
output = p2.communicate()[0]
Но p2 получает исключение, поскольку такого файла или каталога нет. Кажется, p1 stdout заканчивается.
Traceback (most recent call last):
File "/usr/bin/toolbox", line 160, in <module>
d.brokerProfile()
File "/usr/lib/python2.7/site-packages/toollib/deploy.py", line 340, in
brokerProfile
self.dgxm(cmd1)
File "/usr/lib/python2.7/site-packages/toollib/deploy.py", line 327, in dgxm
p2 = Popen([dgxmcmd], stdin = p1.stdout, stdout = PIPE, stderr = PIPE)
File "/usr/lib64/python2.7/subprocess.py", line 390, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1024, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
В любом случае, чтобы выяснить, что здесь происходит? Заранее спасибо.
Дополнительная информация: dgxm - это сторонний инструмент, который принимает команды. Команды динамически генерируются из p1 и затем отправляются в p2 для выполнения с использованием стороннего инструмента.