2010-04-29 29 views
6

Tôi đang cố gắng sử dụng biến môi trường TMP trong một chương trình. Khi tôi yêu cầuso sánh hai cửa sổ đường dẫn, một có chứa dấu ngã, trong python

tmp = os.path.expandvars("$TMP") 

tôi nhận được

C:\Users\STEVE~1.COO\AppData\Local\Temp 

nào chứa các trường học cũ, hình thức dấu ngã. Hàm tôi không kiểm soát đường dẫn trả về như

C:\Users\steve.cooper\AppData\Local\Temp\file.txt 

Vấn đề của tôi là này; Tôi muốn kiểm tra xem tập tin có trong ổ đĩa tạm thời của tôi không, nhưng tôi không thể tìm cách so sánh chúng. Làm thế nào để bạn biết nếu hai thư mục Windows này;

C:\Users\STEVE~1.COO\AppData\Local\Temp 
C:\Users\steve.cooper\AppData\Local\Temp 

là giống nhau?

Trả lời

4

Bạn sẽ cần các phần mở rộng python win32 từ http://sourceforge.net/projects/pywin32/ hoặc tôi sử dụng python đóng gói bởi ActiveState

Chúng bao gồm các chức năng win32file.GetLongPathName đó sẽ làm thay đổi phiên bản 8.3 vào đường dẫn đầy đủ.

8

Đây là giải pháp thay thế chỉ sử dụng ctypes từ Thư viện Python chuẩn.

tmp = unicode(os.path.expandvars("$TMP")) 

import ctypes 
GetLongPathName = ctypes.windll.kernel32.GetLongPathNameW 
buffer = ctypes.create_unicode_buffer(GetLongPathName(tmp, 0, 0)) 
GetLongPathName(tmp, buffer, len(buffer)) 
print buffer.value 
Các vấn đề liên quan