[Tutor] Recursive functions and the windows registry
alan.gauld at btinternet.com
Thu Nov 16 23:41:49 CET 2006
"Todd Dahl" <lucidmonk at gmail.com> wrote
> By the way I don't understand why it seems to work inside the
> ListRegistryKeys function but it doesn't pass all the information
> back to
> the parseRegistry function.
> def ListRegistryKeys(path):
> name = 
> while 1:
> name.append(path + "\\" + _winreg.EnumKey(key, i))
> print name[-1]
> i += 1
> except WindowsError:
I'd rewrite this with the try/except inside the loop.
while True: # use the boolean value, its clearer IMHO :-)
i += 1
except WindowsError: pass
However since you should(?) only get the error when you run out
of keys to iterate that shouldn't cause your problem...
> for item in name:
Note that this call will create a new name list inside the recursive
call. You probably need to do:
name += ListRegistryKeys(item)
> return name
Otherwise this just returns the top level list.
> def parseRegistry():
> guidlist = ListRegistryKeys("CLSID")
> for item in guidlist:
> print "parseRegistry: ", item
> def main():
> if __name__=="__main__":
You could just call parseRegistry directly, there is no rule to
say you need to use a main() function.
Author of the Learn to Program web site
More information about the Tutor