Получения вывода командной строки

import os,subprocess
command=r'pyinstaller C:\Users\user\Desktop\Питон\hello_world.py'
output=os.popen(command)
print(output.read())

я хотел получить вывод командной строки,но метод возвращает лишь перевод строки('\n'):


>>>

Если вручную набрать эту команду в командной строке,то она выведет:

94 INFO: PyInstaller: 3.6
94 INFO: Python: 3.8.1
94 INFO: Platform: Windows-10-10.0.14393-SP0
98 INFO: wrote C:\Users\user\hello_world.spec
99 INFO: UPX is not available.
102 INFO: Extending PYTHONPATH with paths
['C:\\Users\\user\\Desktop\\Питон', 'C:\\Users\\user']
102 INFO: checking Analysis
102 INFO: Building Analysis because Analysis-00.toc is non existent
...
13823 INFO: Building COLLECT COLLECT-00.toc completed successfully.

Именно этот вывод мне и нужен.Попробовал вариант с модулем subprocess,результат тот же:

output=subprocess.Popen(command,stdout=subprocess.PIPE)
print(output.communicate()[0].decode('utf-8'))

>>>

Ответы (2 шт):

Автор решения: Someone

Вопрос решил с помощью метода getoutput:

output=subprocess.getoutput('pyinstaller C:/Users/user/Desktop/Питон/empty.py')
print(output)

Этот метод прямым образом возвращает вывод командной строки.

→ Ссылка
Автор решения: Sergei Kirjanov

Данный текст поступает не на stdout, a на stderr.

getoutput сливает их в одно, поэтому работает.

Но getoutput лучше не использовать, т. к. он игнорирует код возврата.

Есть еще check_output и getstatusoutput.

→ Ссылка