代码之家  ›  专栏  ›  技术社区  ›  Geo

对属于进程输出的每一行执行某些操作

  •  0
  • Geo  · 技术社区  · 15 年前

    当使用 subprocess communicate ,而是在它一生产出来就用它做点什么。这能做到吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   kanaka    15 年前

    不幸的是,将此添加到子流程的建议尚未被接受: http://www.python.org/dev/peps/pep-3145/

    以下是使用现有子流程执行此操作的方法: http://code.activestate.com/recipes/440554/

    一位评论者还指出了这个简单的解决方案(有一些缺点):

    flags = fcntl.fcntl(subprocess.stdout, fcntl.F_GETFL)
    fcntl.fcntl(subprocess.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK)