我有一个我想要调用的外部程序,例如ping -t 8.8.8.8
。
每次ping
打印输出时,为了进行回调,我感到有点困惑。
我正在寻找一种方法,每当有输出时用最新的输出行调用一段代码。
感谢您的帮助!
答案 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