Я вызываю дочерний процесс, используя subprocess.Popen
(Python 2.x в системе POSIX). Я хочу быть в состоянии прочитать вывод дочернего процесса, используя функцию объекта файла readline()
Python. Однако поток, доступный в Popen.stdout
, по-видимому, не имеет метода readline()
.
Используя идею Python readline из pipe в Linux , я попробовал следующее:
p = subprocess.Popen(
[sys.executable, "child.py"],
stdout=subprocess.PIPE)
status = os.fdopen(p.stdout.fileno())
while True:
s = status.readline()
if not s:
break
print s
Однако проблема этого метода заключается в том, что и объект p.stdout
и новый объект status
пытаются закрыть дескриптор одного файла. В конечном итоге это приводит к:
close failed: [Errno 9] Bad file number
Есть ли способ создания файлового объекта, который "оборачивает" ранее созданный файловый объект?