我想捕获archlinux的pacman包管理器的输出。这样做时,我想处理它的输出,但也想向用户显示它。
到目前为止,我带来了什么:-
import subprocess as sb
import sys
lol = sb.Popen('sudo pacman -Syy',stdout=sb.PIPE,shell=True)
while True:
l = lol.stdout.readline().strip()
if not l and lol.poll() is not None:
break
sys.stdout.write(l.decode())
sys.stdout.flush()
但它会打印:-
❯ python test.py
:: Synchronizing package databases...downloading core.db...downloading extra.db...downloading community.db...downloading multilib.db...done
这就是我想要的
:: Synchronizing package databases...
core 135.2 KiB 160 KiB/s 00:01 [############################################################] 100%
extra 1706.7 KiB 470 KiB/s 00:04 [############################################################] 100%
community 4.9 MiB 1107 KiB/s 00:05 [############################################################] 100%
multilib 161.2 KiB 3.09 MiB/s 00:00 [############################################################] 100%
done