我正在使用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
但字符串只包含输出的第一行。
提前致谢
答案 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)