如何在Visual Studio输出窗口中显示python subprocess stdout和stderr?

时间:2012-09-25 20:05:25

标签: python visual-studio

我切换到Visual Studio的Python工具(VS2012),我正在努力让我的项目启动并运行。我遇到的问题是没有在Visual Studio输出窗口中显示的子进程的stdout。我已经创建了一些示例代码来说明问题。

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时显示的python控制台正确显示两个文件的输出。

enter image description here

输出窗口缺少子流程打印语句

enter image description here

以下是一些相关设置

enter image description here

如何让subprocess print语句显示在Visual Studio输出窗口中?理想情况下,输出窗口看起来与python控制台窗口完全相同。

2 个答案:

答案 0 :(得分:3)

作为一种解决方法(查看AnojiRox的答案),您可以从子进程中捕获stdout和stderr,然后从主进程打印它,但是由于所遇到的死锁问题,您需要使用Popen及其communicate methodthe 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

答案 1 :(得分:0)

你做不到。 我之前搜索过这个,但一无所获。如果我错了,请纠正我。

尝试使用文本编辑器和python控制台。