1

我切换到 Visual Studio (VS2012) 的 Python 工具,我正在尝试启动并运行我的项目。我在 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 时出现的 python 控制台正确显示了两个文件的输出。

在此处输入图像描述

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

在此处输入图像描述

以下是一些相关设置

在此处输入图像描述

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

4

2 回答 2

3

作为一种解决方法(查看 AnojiRox 的答案),您可以从子进程中捕获 stdout 和 stderr,然后从主进程中打印它,但是由于文档中所述的死锁问题,您需要使用 Popen 及其communicate方法

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
于 2012-09-25T20:20:08.500 回答
-1

你不能。我以前搜索过这个,什么也没找到。如我错了请纠正我。

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

于 2012-09-25T20:08:39.363 回答