2017-01-29 5 views
-2

Я пытаю напечатать на терминал в Python, используя следующий код, полученный от подобных вопросов:Получение странный вывод из Popen

cmd = 'test' 
output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0] 
print(output) 

Однако делать это дает мне выход:

b'' 

Как я могу исправить свой код для корректного вывода на терминал?

+0

В чем ваш вопрос? – DyZ

+0

Как я могу исправить свой код для корректного вывода на терминал? Все остальные вопросы/решения, похоже, указывают на то, что это правильный способ сделать это. – arcade16

+0

Какой результат вы ожидаете? –

ответ

6

От человека страниц:

test - check file types and compare values 

Программа для проверки файлов. И когда вы запускаете его в командной строке .. он просто ничего не печатает (потому что эта команда работает с именами файлов, предоставленных ему, и поскольку вы не передаете никаких аргументов, просто нечего сказать)

И что вывод там говорит, что (где b '' означает: пустой массив байтовых байтов, см. here).

Итак, реальный ответ здесь: прежде чем вы начинаете задаваться вопросом, что делает инструмент, когда вы вызываете его внутри python ... запускайте его прямо на оболочке.

+0

Ссылка, которую я предоставляю там ... объясняет именно эту часть b ''. – GhostCat

+3

Значит, вы не знаете, что вы делаете, и ожидаете, что другие люди вам это объяснят? Ваш ** собственный ** код использует подпроцесс для запуска * подпроцесса * для запуска команды, с которой ** вы ** переходите к ней. Эта команда называется тестом. Предполагая, что вы используете систему Linux, я объяснил вам, что такое «тест». – GhostCat