Python 子进程标准输出未接收所有输出

Python 子进程标准输出未接收所有输出,python,python-2.7,Python,Python 2.7,我正在尝试创建一个脚本,该脚本将运行一个程序,然后运行第二个程序从第一个程序获取日志,并等待它收到特定的日志条目后再继续 这就是我到目前为止所做的: log_process = subprocess.Popen(["/system/bin/logcat", "-T10", "-s", "SetupReceiver:I"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) call_am("start_setup") while True:

我正在尝试创建一个脚本,该脚本将运行一个程序,然后运行第二个程序从第一个程序获取日志,并等待它收到特定的日志条目后再继续

这就是我到目前为止所做的:

log_process = subprocess.Popen(["/system/bin/logcat", "-T10", "-s", "SetupReceiver:I"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
call_am("start_setup")
while True:
    for line in iter(log_process.stdout.readline, "_exit_string_"):
        logger.debug("{0} found in logcat".format(line))
        if "Automatic setup succeeded" in line:
            # Setup complete
            log_process.kill()
            break
        elif "Automatic setup failed" in line:
            # Setup failed
            disable_device("TV Setup Failed")
            log_process.kill()
            break
该脚本成功地启动了这两个程序,并在调试中打印了前几条日志消息。但是,它随后停止并不再输出任何日志


为什么没有检测到日志,以及如何使脚本工作?

readline(以及更多)的实现存在问题,请参见示例。我对Emacs上的elpy有这样的问题,当连接到Python的“某些”版本下的“慢速”管道时,他通常在readline中“一段时间”后挂起。你试过蟒蛇3吗?似乎使用它工作得更好(我个人不记得在使用它时遇到过问题。)@thierrylahuille不幸的是,Python 3不适用于我开发的平台:(问题为我解决了。其他用户只有在不使用virtualenv时才遇到了与我相同的问题。我最终设法让一切正常工作,1)使用virtualenvs(使用pyenv创建,从源代码编译python),2)使用从源代码编译的python(我使用了最新的2.7.13),而不是原来的(2.7.6)我的Ubuntu安装。还是不知道问题出在哪里,尽管。。。