-1

リストの値を正規表現パターンに一致させようとしています。リスト内の特定の値が一致する場合は、それを別のdictのリストに追加します。上記の値が一致しない場合は、リストから値を削除したいと思います。

import subprocess

def list_installed():
    rawlist = subprocess.check_output(['yum', 'list', 'installed']).splitlines()
    #print rawlist
    for each_item in rawlist:
        if "[\w86]" or \
        "noarch" in each_item:
            print each_item #additional stuff here to append list of dicts
            #i haven't done the appending part yet
            #the list of dict's will be returned at end of this funct
        else:
            remove(each_item)

list_installed()

最終的な目標は、最終的に次のようなことを実行できるようにすることです。

nifty_module.tellme(installed_packages[3]['version'])
nifty_module.dosomething(installed_packages[6])

wtfを使用するgnu/linuxユーザーへの注意:これは、最終的にはより大きなsysadminフロントエンドに成長します。

4

1 に答える 1

0

あなたの投稿には実際の質問がありませんが、いくつかコメントします。

  • ここに問題があります:

    if "[\w86]" or "noarch" in each_item:
    

    それはあなたがそれを考えるように解釈されず、それは常にに評価されTrueます。あなたはおそらく必要です

    if "[\w86]" in each_item or "noarch" in each_item:
    

また、あなたが何をしているのかはわかりませんが、Pythonがここで正規表現のマッチングを行うことを期待している場合は、そうではありません。それが必要な場合は、reモジュールを見てください。

  • remove(each_item)

    それがどのように実装されているかはわかりませんが、要素を削除することを期待している場合はおそらく機能しませんrawlistremove内部で定義されたリストに実際にアクセスすることはできませんlist_installed。代わりに使用することをお勧めしますrawlist.remove(each_item)が、この場合は、を繰り返し処理しているため、使用しないでくださいrawlist。手順を少し考え直す必要があります(たとえば、削除する代わりに、別のリストを作成し、それに必要な要素を追加します)。

于 2012-11-05T20:45:59.157 に答える