6

我正在尝试在程序中使用 TMP 环境变量。当我要求

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

是相同的?

4

2 回答 2

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
于 2010-10-14T09:28:22.707 回答
4

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

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

于 2010-04-29T15:31:34.133 回答