Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在linux中使用python以字符串形式保存命令的输出_Python - Fatal编程技术网

在linux中使用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检查这个命令的输出中是否存在单词没有匹配的包要列出。我检查了一个类似的问题,并尝试了一些方法 但是字符串只包含输出的第一

我使用的是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 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
返回的字符串,而不是类似文件的对象。