Usar funciones para path largos de Windows en Python
Andrés Moya <[email protected]>
| Newsgroups | gmane.comp.python.general.castellano |
|---|---|
| Message-ID | <[email protected]> |
Buenas. Tengo una pregunta un poco sofisticada, a ver si me podéis ayudar. Resulta que utilizando una herramienta de Python (FileSystemStorage para Plone), en un momento dado me he encontrado con el error "[Errno 38] Filename too long". Brujuleando un poco he llegado a este artículo de Microsoft: http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx en el que se indica, entre otras cosas, que el API de Win32 tiene una limitación en sus funciones de ficheros por la que un path completo no puede ser más largo de 260 caracteres. Y esta herramienta está llamando a os.path.getmtime(file_path), en una estructura de directorios que he creado que tiene bastantes niveles y nombres largos, con lo que el path sobrepasa esa longitud. Pero el artículo también dice que las funciones del API tienen una versión (por ejemplo, GetFileAttributes y GetFileAttributesW) que acepta parámetros en Unicode y que se le puede pasar un path más largo si se le añade el prefijo "\\?\". Por ejemplo, "\\?\D:\<path_muy_largo>". ¿Sabéis si hay alguna forma de decirle al módulo os de python que llame a esas funciones del api? Algo así como os.path.getmtimeW(u'\\\\?\\" + unicode(file_path)) Ojo: uso Pyton 2.4. Gracias. P.D. voy a poner también un ticket a los desarrolladores de la herramienta para que lo miren, pero si averiguo cómo hacer esto, igual puedo hacer el parche yo mismo. -- Andrés Moya _______________________________________________ Lista de correo Python-es http://listas.aditel.org/listinfo/python-es FAQ: http://listas.aditel.org/faqpyes