2012-09-25 1 views
1

Я переключился на Python Tools для Visual Studio (VS2012), и я пытаюсь запустить мой проект. У меня возникла проблема с выводом субпроцессов, которые не отображаются в окне вывода Visual Studio. Я привел пример кода для иллюстрации проблемы.Как я могу получить подпроцесс python stdout и stderr для отображения в окне вывода Visual Studio?

test_console.py

import os 
import subprocess 
print 'printed from the main process' 
command = 'python ' + os.path.join(os.getcwd(),'test_console_sub.py') 
subprocess.call(command) 

test_console_sub.py

print 'printed from a subprocess' 

Питон консоль, которая появляется при выполнении test_console.py правильно показывает результат обоих файлов.

enter image description here

Окно вывода отсутствует заявление подпроцесс печати

enter image description here

Вот некоторые из соответствующих настроек

enter image description here

Как я могу получить подпроцесс печать для отображения в Visual Studio положить окно? В идеальном случае окно вывода будет выглядеть точно так же, как в окне консоли python.

ответ

3

В качестве обходного пути (видя ответ AnojiRox) можно поймать стандартный вывод и стандартный поток ошибок из подпроцесса, а затем распечатать его из основного процесса, но вы должны использовать POPEN и его communicate method из-за тупика проблему, сформулированную в the docs.

import os 
import subprocess 

print 'printed from the main process' 
command = ['python', os.path.join(os.getcwd(), 'test_console_sub.py')] 
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
(stdout, stderr) = p.communicate() 
print stdout 
print stderr 
+0

wow. Я потратил двенадцать часов своей короткой жизни на поиски в Google, и вы можете сделать это в 7 строках кода. – Cinder

0

Вы не можете. Я искал это раньше и ничего не нашел. поправьте меня если я ошибаюсь.

Попробуйте вместо этого использовать текстовый редактор и консоль python.

Смежные вопросы