在Python中比较包含波浪符的两个Windows路径

7
我正在尝试在程序中使用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

是一样的吗?
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

5
你需要从http://sourceforge.net/projects/pywin32/获取python win32扩展,或者使用ActiveState打包的Python。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接