subprocess.Popen不运行bash命令?

时间:2013-08-09 08:17:02

标签: python bash ubuntu subprocess

我尝试在Python IDLE中使用子进程.Popen,在2.7和3.2版本中,代码都不起作用!!!

The Python Code

谢谢。

1 个答案:

答案 0 :(得分:2)

我怀疑IDLE会重定向Python的stdout,以便print在窗口中发生,但它不会重定向文件描述符1,因此任何子进程都会愉快地打印到该文件描述符。

尝试从命令行启动IDLE,运行这些行并查看它们的输出是否打印到调用IDLE的终端。

解决方案:

  1. 不要使用IDLE。从命令行调用的python解释器调用你的东西。
  2. 将进程的输出重定向到管道,读取此管道并输出。如:

    sp = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
    for i in sp.stdout: print i
    sp.wait()