在linux中使用python以字符串形式保存命令的输出
我使用的是Fedora17XFCE,我使用的是Python 2.7.3编程。Fedora使用名为yum的包管理器。我有一个python脚本,可以搜索这样的包:在linux中使用python以字符串形式保存命令的输出,python,Python,我使用的是Fedora17XFCE,我使用的是Python 2.7.3编程。Fedora使用名为yum的包管理器。我有一个python脚本,可以搜索这样的包: import os package = raw_input("Enter package name to search: ") os.system("yum list " + package) 因此,我希望python检查这个命令的输出中是否存在单词没有匹配的包要列出。我检查了一个类似的问题,并尝试了一些方法 但是字符串只包含输出的第一
import os
package = raw_input("Enter package name to search: ")
os.system("yum list " + package)
因此,我希望python检查这个命令的输出中是否存在单词没有匹配的包要列出。我检查了一个类似的问题,并尝试了一些方法
但是字符串只包含输出的第一行
提前感谢操作系统。系统不会返回任何输出。您链接到的问题有正确答案。如果你只得到了输出的第一行,也许你是想逐行阅读
获得整个输出的正确方法是:
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()
您可能希望为此使用模块,因为它只返回命令的退出代码:
from subprocess import check_output
out = check_output(['yum', 'list', raw_input('package name')])
您还可以直接使用Yum搜索包:
from yum import YumBase
base = YumBase()
for package, name in base.searchGenerator(['name'], ['python']):
print(package.name, package.version)
out
是由Popen.communicate
返回的字符串,而不是类似文件的对象。