[Python-Dev] mimetypes and _winreg (original) (raw)

Mike Brown mike at skew.org
Wed Feb 2 01:50:51 CET 2005


Following up on this 12 Jun 2004 post...

Garth wrote:

Thomas Heller wrote: >Mike Brown <mike at skew.org> writes: >>I thought it would be nice to try to improve the mimetypes module by having >>it, on Windows, query the Registry to get the mapping of filename extensions >>to media types, since the mimetypes code currently just blindly checks >>posix-specific paths for httpd-style mapping files. However, it seems that the >>way to get mappings from the Windows registry is excessively slow in Python. >> >>I'm told that the reason has to do with the limited subset of APIs that are >>exposed in the winreg module. I think it is that EnumKey(key, index) is >>querying for the entire list of subkeys for the given key every time you call >>it. Or something. Whatever the situation is, the code I tried below is way >>slower than I think it ought to be. >> >>Does anyone have any suggestions (besides "write it in C")? Could winreg >>possibly be improved to provide an iterator or better interface to get the >>subkeys? (or certain ones? There are a lot of keys under HKEYCLASSESROOT, >>and I only need the ones that start with a period). > >See this post I made some time ago: ><http://mail.python.org/pipermail/python-dev/2004-January/042198.html> > >>Should I file this as a feature request? > >If you still think it should be changed in the core, you should work on >a patch. > I could file a patch if no one else is looking at it. The solution would be to use RegEnumKeyEx and remove RegQueryInfoKey. This loses compatability with win16 which I guess is ok.

Garth

I would say it looks like no one else was looking at it, and Garth apparently didn't submit a patch. It's beyond my means to come up with a patch myself. Would someone be willing to take a look at it?

Sorry, but I really want access to registry subkeys to stop being so dog-slow. :)

Thanks for taking a look,

-Mike



More information about the Python-Dev mailing list