銀月の符号

Python 使い見習いの日記・雑記

Python で Windows のレジストリ操作

PythonRecipe に久しぶりに書き込みしてきた。「214:Windowsレジストリにアクセスする」というネタ。

_winreg モジュールの EnumValue の使いにくさはガチ。Value ってもろ単数形…。持っている値を列挙するのが役目なのに、名前のとおり値を1つずつしか得られない。なので、レジストリを読むときには

import _winreg

def enum_values(key):
    u"""_winreg.EnumValue(key, index) を for 文で使える形に
    """
    try:
        i = 0
        while True:
            yield _winreg.EnumValue(key, i)
            i += 1
    except EnvironmentError:
        pass

def read_values(key):
    u"""開かれているレジストリの値を辞書で返す
    """
    values = {}
    for name, value, type_ in enum_values(key):
        values[name] = value
    return values

って関数を用意しておくとちょっとだけ幸せになれるかも、というのが主旨? あとは関数使用例など。