在Python中比较两个窗口path,一个包含波浪号

我试图在程序中使用TMP环境variables。 当我问

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

我明白了

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

其中包含旧式的代字forms。 一个函数,我不能控制返回path

 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 

是相同的?

您将需要来自http://sourceforge.net/projects/pywin32/的python win32扩展,或者我使用由ActiveState打包的python

它们包括函数win32file.GetLongPathName,它将8.3版本转换为完整路径。

以下是仅使用标准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