2012-07-10 3 views
6

ta zwraca mi krótka ścieżka (konwencja DOS) (w systemie Windows):Jak uzyskać ścieżkę układ pliku z Pythona na Windows

import tempfile 
tempDir = tempfile.mkdtemp() 
print tempDir 

Output >>> c:\users\admini~1\appdata\local\temp\tmpf76unv 

Zawiadomienie admini~1.

Jak mogę uzyskać/przekonwertować to na pełną ścieżkę? na przykład C: \ Users \ Administrator \ AppData ...

+0

@Levon Próbowałem kilka metod w 'os.path' ale nic nie robi to dla mnie. –

+1

@AndyArismendi dlaczego potrzebujesz pełnej ścieżki? –

+0

@AshwiniChaudhary dla moich celów próbuję rozwiązać problem modułu stron trzecich i chciałem rzucić na niego pełną ścieżkę, ale nie znalazłem "wbudowanego" sposobu na uzyskanie długiej ścieżki, chociaż mogłem z innych powodów chcieć tego: 1) wyświetlanie ścieżek, 2) po wyłączeniu [Windows 8.3 Name Creation] (http://support.microsoft.com/kb/121007). –

Odpowiedz

9

Spróbuj następujący kod (Aktualizacja):

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 

Nadzieja to pomaga. Proszę odnieść się do http://mail.python.org/pipermail/python-win32/2008-January/006642.html

+0

Możliwe odpowiedzi są również dostępne pod adresem http://stackoverflow.com/questions/1587816/is-it-possible-to-access-the-getlongpathname-win32-api-in-python –

+0

To działa. Dzięki! –

4
tempDir = win32file.GetLongPathName(tempDir)