Проблема с печатью popen stdout из подпроцесса

Мне нужно положить выходную команду в переменную. Я пытался это:

import os
import subprocess

output = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)
print (output.stdout)

output.terminate()

но я получаю

'open file '<fdopen>', mode 'rb' at 0xb76db5a0>'

в чем проблема? Это нормально?

Я использую Python 2.6.6.

1 ответ

Решение

output.stdout это файловый объект Вы можете использовать read Метод объекта файла для получения содержимого вывода:

print(output.stdout.read())

или вы можете использовать Popen.communicate метод вместо:

stdout, stderr = output.communicate()
print(stdout)
Другие вопросы по тегам