2012-07-10 29 views
6

này trả về cho tôi một con đường ngắn (DOS ước) (trên Windows):Làm thế nào để có được đường dẫn hệ thống tập tin dài từ python trên Windows

import tempfile 
tempDir = tempfile.mkdtemp() 
print tempDir 

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

Thông báo các admini~1.

Làm cách nào tôi có thể nhận/chuyển đổi thành đường dẫn đầy đủ? ví dụ. C: \ Users \ Administrator \ AppData ...

+0

@Levon Tôi đã thử một loạt các phương thức trong 'os.path' nhưng không có gì làm việc đó cho tôi. –

+1

@AndyArismendi tại sao bạn cần đường dẫn đầy đủ? –

+0

@AshwiniChaudhary cho mục đích của tôi Tôi đang khắc phục sự cố mô-đun bên thứ ba và muốn ném đường dẫn đầy đủ nhưng không tìm thấy cách "tích hợp" để có đường dẫn dài, mặc dù tôi có thể một số lý do khác có thể muốn: 1) hiển thị đường dẫn, 2) khi [Windows 8.3 Tạo tên bị tắt] (http://support.microsoft.com/kb/121007). –

Trả lời

9

Vui lòng thử đoạn mã sau (cập nhật):

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 

Hope this helps. Vui lòng tham khảo http://mail.python.org/pipermail/python-win32/2008-January/006642.html

+0

Câu trả lời có thể có sẵn tại http://stackoverflow.com/questions/1587816/is-it-possible-to-access-the-getlongpathname-win32-api-in-python –

+0

Thực hiện thủ thuật. Cảm ơn! –

4
tempDir = win32file.GetLongPathName(tempDir) 
Các vấn đề liên quan