2010-04-29 17 views
6

我想在程序中使用TMP環境變量。當我問比較兩個窗口路徑,其中一個包含代字符,在python

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

我得到

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

其中包含了老派的,波浪的形式。功能我無法控制返回路徑,如

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

我的問題是這樣的;我想檢查文件是否在我的臨時驅動器中,但我無法找到比較它們的方法。你怎麼知道這兩個Windows目錄;

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

是一樣的嗎?

回答

8

以下是替代解決方案,僅使用標準Python庫中的ctypes

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