Я хочу перехватить вывод dpkg --list | grep linux-image
в Python 2.6.5 в Ubuntu 10.04.
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]
Содержимое стандартного вывода:
>>> print stdout
rc linux-image-2. 2.6.31-14.48 Linux kernel image for version 2.6.31 on x86
ii linux-image-2. 2.6.32-22.36 Linux kernel image for version 2.6.32 on x86
ii linux-image-2. 2.6.32-23.37 Linux kernel image for version 2.6.32 on x86
ii linux-image-2. 2.6.32-24.43 Linux kernel image for version 2.6.32 on x86
ii linux-image-2. 2.6.32-25.44 Linux kernel image for version 2.6.32 on x86
ii linux-image-ge 2.6.32.25.27 Generic Linux kernel image
Однако этоне то же самое, что запуск dpkg --list | grep linux-image
в оболочке:
cschol@blabla:~$ dpkg --list | grep linux-image
rc linux-image-2.6.31-14-generic 2.6.31-14.48 Linux kernel image for version 2.6.31 on x86
ii linux-image-2.6.32-22-generic 2.6.32-22.36 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-23-generic 2.6.32-23.37 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-24-generic 2.6.32-24.43 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-25-generic 2.6.32-25.44 Linux kernel image for version 2.6.32 on x86
ii linux-image-generic 2.6.32.25.27 Generic Linux kernel 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?