每次子进程打印时回调

时间:2016-06-10 13:19:22

标签: python python-3.x

我有一个我想要调用的外部程序,例如ping -t 8.8.8.8

每次ping打印输出时,为了进行回调,我感到有点困惑。

我正在寻找一种方法,每当有输出时用最新的输出行调用一段代码。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

此代码有效,诀窍是使用process.stdout.readline(),因为它会阻塞,直到准备就绪。

示例代码:

cmd = "ping -t www.google.com"
ping = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)

try:
    while True:
        line = str(ping.stdout.readline(), "ascii")
        print(line)  # this can be anything
except KeyboardInterrupt:
    ping.terminate()  # don't wanna leave a process hanging in the background