我尝试在Python IDLE中使用子进程.Popen,在2.7和3.2版本中,代码都不起作用!!!
谢谢。
答案 0 :(得分:2)
我怀疑IDLE会重定向Python的stdout
,以便print
在窗口中发生,但它不会重定向文件描述符1,因此任何子进程都会愉快地打印到该文件描述符。
尝试从命令行启动IDLE,运行这些行并查看它们的输出是否打印到调用IDLE的终端。
解决方案:
python
解释器调用你的东西。将进程的输出重定向到管道,读取此管道并输出。如:
sp = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
for i in sp.stdout: print i
sp.wait()