使用python将命令的输出保存在linux中的字符串中

时间:2012-09-09 09:35:17

标签: python

我正在使用Fedora 17 xfce,而我正在使用Python 2.7.3进行编程。 Fedora使用名为yum的包管理器。我有一个python脚本,可以搜索这样的包:

import os
package = raw_input("Enter package name to search: ")
os.system("yum list " + package)

所以我希望python检查在这个命令的输出中是否存在单词No matching packages to list。我检查了一个类似的问题,我尝试了一些方法here 但字符串只包含输出的第一行。

提前致谢

2 个答案:

答案 0 :(得分:4)

os.system不会返回任何输出。您链接的问题有正确的答案。如果你只得到输出的第一行,也许你试图逐行读取它?

获得整个输出的正确方法是:

import subprocess
package = raw_input("...")
p = subprocess.Popen(["yum", "install", package], stdout=subprocess.PIPE)
out, err = p.communicate()
# Wait for the process to exit before reading
p.wait()    

full_output = out.read()

答案 1 :(得分:2)

您可能希望使用subprocess模块,因为os.system()只返回命令的退出代码:

from subprocess import check_output
out = check_output(['yum', 'list', raw_input('package name')])

您也可以直接使用Yum的API搜索包:

from yum import YumBase

base = YumBase()
for package, name in base.searchGenerator(['name'], ['python']):
    print(package.name, package.version)