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