-1

私は 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同様の質問を確認し、ここでいくつかの方法を試しまし たが、文字列には出力の最初の行しか含まれていませんでした。

前もって感謝します

4

2 に答える 2

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()
于 2012-09-09T09:41:34.217 に答える
2

os.system()は単にコマンドの終了コードを返すだけなので、そのためにsubprocessモジュールを使用したいと思うでしょう:

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)
于 2012-09-09T10:07:48.700 に答える