¿Puedo usar las abstracciones de la biblioteca en python?

Estoy usando:

for root, dirs, files in os.walk(rootDir): 

para navegar por los directorios. Todo bien. Sin embargo, estoy ejecutando en Windows 7, que por supuesto tiene la abstracción de la biblioteca. Entonces, por ejemplo, la biblioteca de imágenes podría asignarse a c:\users\me and c:\users\share ¿Hay alguna forma de que pueda usar esta abstracción de la biblioteca con python?

A menos que esté equivocado acerca de cómo funciona esta función (en realidad no tengo una caja de Win7 frente a mí), tendrá que acceder a las API de Windows Shell para acceder a las bibliotecas.

Al leer Introducción a las bibliotecas de la revista MSDN, parece bastante claro que las aplicaciones que solo se ocupan del sistema de archivos verán una biblioteca como un directorio normal, y ni siquiera tendrán una indicación de los diversos directorios dispersos que forman la biblioteca. A menos que siempre se adhiera a los diálogos de selección de archivos de fantasía para obtener todas las rutas (en cuyo caso el usuario ve las bibliotecas, pero siempre termina eligiendo una carpeta específica, por lo que no tiene que tratar con las bibliotecas), tiene que usar explícitamente las API de shell.

Creo que quieres comenzar en las bibliotecas de Windows para la guía de desarrollo y en IShellLibrary para la referencia.

Obviamente, estas son API de COM, por lo que probablemente desee usar win32com para acceder a ellas desde Python. (Puedes usar ctypes y lidiar con el estilo COM del estilo C, pero realmente no quieres). Es posible que alguien ya haya envuelto estos objetos COM en una bonita interfaz de Python. No encontré nada en forma rápida. Búsquedas de PyPI y ActiveState, pero es posible que desee probar una búsqueda más seria.

Por supuesto, también puede usar IronPython y las API de .NET en lugar de las nativas.

La comstackción más reciente de Pywin32 (218) es compatible con las interfaces de la biblioteca de shell:

 import pythoncom from win32com.shell import shell, shellcon from win32com import storagecon import os kfm = pythoncom.CoCreateInstance(shell.CLSID_KnownFolderManager, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IKnownFolderManager) libs_folder = kfm.GetFolder(shell.FOLDERID_Libraries) libs_path = libs_folder.GetPath() for lib_file in os.listdir(libs_path): if os.path.splitext(lib_file)[1] == '.library-ms': print lib_file i = shell.SHCreateItemFromParsingName(os.path.join(libs_path, lib_file), None, shell.IID_IShellItem) lib = pythoncom.CoCreateInstance(shell.CLSID_ShellLibrary, None, pythoncom.CLSCTX_INPROC, shell.IID_IShellLibrary) lib.LoadLibraryFromItem(i, storagecon.STGM_READ) for folder in lib.GetFolders(): print '\t' + folder.GetDisplayName(shellcon.SHGDN_FORPARSING)