擅长:python、mysql、java
<p>正如您所观察到的,试图解析人类可读的输出是脆弱的。幸运的是,您可以将<code>dpkg -l</code>替换为<code>dpkg-query -W -f='${Package}\t${Version}\n'</code>,这是为生成机器可读输出而设计的。有关<code>dpkg-query</code>选项的完整列表,请参见<a href="http://manpages.ubuntu.com/manpages/lucid/man1/dpkg-query.1.html" rel="nofollow">http://manpages.ubuntu.com/manpages/lucid/man1/dpkg-query.1.html</a>。在</p>
<pre><code>>>> args = ["dpkg-query", "-W", "-f=${Package}\t${Version}\n"]
>>> out, err = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
>>> print out #output is summarized, clearly
git 1:1.7.9.5-1
git-man 1:1.7.9.5-1
</code></pre>