2011-08-18 73 views
13

我有一个使用子python脚本:窗口 - 直接VS运行蟒蛇blah.py运行的.py行为不同

import subprocess 
print "Running stuff" 
subprocess.check_call(["do_stuff.bat"]) 
print "Stuff run" 

如果这个被命名为blah.py,我跑(从命令提示符) :

python blah.py 

我将得到do_stuff.bat(或任何我运行的)的输出。

如果这样运行的:

blah.py 

然后,我没有得到来自do_stuff.bat输出,只打印报表。

到目前为止在Windows Server 2003上出现过。Python版本2.5.2(由于各种原因卡在那里)。 望着关联的文件类型的动作我看:

Python.File = “C:\ Python25 \ python.exe” “%1” %*

因此,谁能解释的区别?

+1

我会大胆地猜测,说显式调用蟒蛇使得终端标准出来,而只是调用文件管道在其他地方标准化。我无法确认这个预感。 – Exelian

+0

在运行Python 2.6.6的Windows 7 64位上,从批处理中输出的数据在自行调用blah.py之后会打印到屏幕上。 – Helbreder

+0

在我的Windows 7 32位上运行Python 2.6.6无法重现它。 –

回答

1

我有使用线程的常见问题,但我所有的代码是在Python中。线程无法使用打印写入标准输出。只是主线程可以做到这一点。我用somethnig这样

import sys 
sys.stdout.write("this was printed by thread") 

我知道,也许它不会帮你bat文件...

+0

这很有趣,可能与子流程的工作方式有关 - 它不会解决问题,但是是相关的。 –

+2

*线程无法使用print来写入标准输出*您为什么这么认为? –