Comment puis-je boucler à travers Voici le code: strong> p> OH, le figuré. Mais si quelqu'un sait d'une autre façon de le faire, j'accepterai toujours cette réponse! P> P>
5 Réponses :
ne devrait pas être enumvalue d'aider ici
# list all values for a key
try:
count = 0
while 1:
name, value, type = _winreg.EnumValue(t, count)
print repr(name),
count = count + 1
except WindowsError:
pass
Je préfère éviter em> l'erreur au lieu de plonger directement ... Utilisez _ winreg.queryinfokey pour obtenir le nombre de valeurs: p> pour obtenir le nombre de clés, même méthode , index différent (deuxième moitié de la question originale): p> Remarque: em> utiliser importer code> au lieu de de à partir de ... importer code> pour le rendre explicite lorsque les fonctions et les variables viennent de. Facilite la suivi du code plus tard dans la vie. P> p>
Le -1 code> dans xRange laisse la dernière touche. Je pense que cela devrait simplement être pour i in xrange (_winreg.queryinfokey (clé) [0]): code>
Pour itération des clés et des valeurs du registre, vous auriez besoin de Enumkey () code> et Enumvalue () code> méthode à partir de _winreg code> Module. Notez que ces deux méthodes, prennent index comme argument et vous fourniront la clé (ou la valeur) uniquement pour l'indice donné. Par conséquent, afin d'obtenir toutes les clés (ou valeurs), vous devez incrémenter l'index par un et continuer jusqu'à ce que WindowsError code> n'a pas rencontré. P>
pour Python 3
(python3) à l'aide de générateurs et de récursivité, car je n'aime pas les comptoirs ...
def get_keys(self, path, i=0):
try:
yield winreg.EnumValue(winreg.OpenKey(winreg.HKEY_CURRENT_USER, path), i)
yield from get_keys(path, i+1)
except WindowsError as err:
pass
for name, value, type in r.get_keys(r"Local Settings\Software\Microsoft\Windows\Shell\MuiCache"):
print(f"{name} => {value} ({type})"