比如我用 apt-get -y install vim 这样的
或者 ping www.baidu.com 这样的
他屏幕回显肯定一大堆,每秒钟好几行,
我想持续不断的获得回显,而不是等程序跑完了才获得
有办法吗?

比如我用 apt-get -y install vim 这样的
或者 ping www.baidu.com 这样的
他屏幕回显肯定一大堆,每秒钟好几行,
我想持续不断的获得回显,而不是等程序跑完了才获得
有办法吗?
1 wangyongbo Sep 19, 2016 p = subprocess.Popen('ping www.baidu.com > /dev/stdout', shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE) p.stdout.readline() 其他命令 应该都差不多吧。 |
2 gimp Sep 19, 2016 cmd = 'ping -c 6 ' + url r = Popen(cmd, shell=True, stdout=PIPE) for line in iter(r.stdout.readline, b''): line = line.strip('\r\n') print line |
3 gimp Sep 19, 2016 上边的是 python2.7 的代码,缩进爆炸... |
4 whx20202 OP 上面两位已感谢 我去试试哈 |
5 lunaticus7 Sep 19, 2016 python -u |
6 Ethaniz Sep 19, 2016 用 PIPE ,一定要及时消费,小心死锁 |
7 264768502 Sep 19, 2016 可以参考下面对 adb 的实现 https://github.com/264768502/adb_wrapper/blob/master/adb_wrapper/adb_wrapper.py 看 def _enqueue_output 和 def _adbcommand_blocking |
9 0xccff Sep 19, 2016 输入输出重定向 |
10 xFrank Sep 20, 2016 用 subprocess.call 就行了 |