擅长:python、mysql、java
<p>我认为没有比将子流程重定向到您在评论中提到的文件更好的选择了。</p>
<p>在windows中,控制台stdin/out/err的工作方式是在每个进程诞生时定义其<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms683231%28v=vs.85%29.aspx" rel="nofollow">std handles</a>。你可以用<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms686244%28v=vs.85%29.aspx" rel="nofollow">SetStdHandle</a>来改变它们。当修改python的<code>sys.stdout</code>时,只修改python打印内容的位置,而不是其他DLL打印内容的位置。DLL中的CRT的一部分是使用GetStdHandle来找出要打印到的位置。如果需要,可以在DLL中的windows API或pywin32中的python脚本中进行任何管道操作。尽管我认为用<a href="http://docs.python.org/library/subprocess.html#subprocess.call" rel="nofollow">subprocess</a>会更简单。</p>