2012-07-10 11 views
6

Esto me de una ruta corta (convención DOS) (en Windows) devuelve.Como llegar ruta del sistema de archivo largo de Python en Windows

¿Cómo puedo obtener/convertir esto en una ruta completa? p.ej. C: \ Users \ administrador \ AppData ...

+0

@Levon Probé varios métodos en 'os.path' pero nada lo hacía por mí. –

+1

@AndyArismendi ¿por qué necesitas la ruta completa? –

+0

@AshwiniChaudhary para mis propósitos estoy solucionando un problema con un módulo de terceros y quería abrir caminos completos, pero no encontré la forma "integrada" para obtener el camino largo, aunque podría haber otras razones por las que uno podría querer esto: 1) visualización de rutas, 2) cuando [Windows 8.3 Name Creation está deshabilitada] (http://support.microsoft.com/kb/121007). –

Respuesta

9

Inténtelo el siguiente código (actualizado):

from ctypes import create_unicode_buffer, windll 
BUFFER_SIZE = 500 
buffer = create_unicode_buffer(BUFFER_SIZE) 
get_long_path_name = windll.kernel32.GetLongPathNameW 
get_long_path_name(unicode(short_path_name), buffer, BUFFER_SIZE) 
long_path_name = buffer.value 

Espero que esto ayude. Consulte http://mail.python.org/pipermail/python-win32/2008-January/006642.html

+0

Posible respuesta también está disponible en http://stackoverflow.com/questions/1587816/is-it-possible-to-access-the-getlongpathname-win32-api-in-python –

+0

Hace el truco. ¡Gracias! –

4
tempDir = win32file.GetLongPathName(tempDir) 
Cuestiones relacionadas