【发布时间】:2010-10-03 02:07:24
【问题描述】:
我想在 Ubuntu 10.04 上的 Python 2.6.5 中捕获 dpkg --list | grep linux-image 的输出。
from subprocess import Popen
from subprocess import PIPE
p1 = Popen(["dpkg", "--list"], stdout=PIPE)
p2 = Popen(["grep", "linux-image"], stdin=p1.stdout, stdout=PIPE)
stdout = p2.communicate()[0]
stdout的内容是:
>>> 打印标准输出 rc linux-image-2。 2.6.31-14.48 x86 上 2.6.31 版本的 Linux 内核映像 ii linux-image-2。 2.6.32-22.36 x86 上 2.6.32 版本的 Linux 内核映像 ii linux-image-2。 2.6.32-23.37 x86 上版本 2.6.32 的 Linux 内核映像 ii linux-image-2。 2.6.32-24.43 x86 上版本 2.6.32 的 Linux 内核映像 ii linux-image-2。 2.6.32-25.44 x86 上版本 2.6.32 的 Linux 内核映像 ii linux-image-ge 2.6.32.25.27 通用 Linux 内核映像但是,这与在 shell 中运行 dpkg --list | grep linux-image 不同:
看第一行,可以看到Python中的输出被截断了:
rc linux-image-2。 2.6.31-14.48
而不是
rc linux-image-2.6.31-14-generic 2.6.31-14.48
为什么要这样做,有没有办法在 Python 中获得完全相同的输出?
【问题讨论】:
标签: python subprocess pipe