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})"