Получения вывода командной строки
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.