1

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

Python 代码

谢谢你。

4

1 回答 1

2

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

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

解决方案:

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

    sp = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
    for i in sp.stdout: print i
    sp.wait()
    
于 2013-08-09T08:34:51.943 回答