Ste*_*per 6 python windows directory path string-comparison
我正在尝试在程序中使用TMP环境变量.当我要求
tmp = os.path.expandvars("$TMP")
Run Code Online (Sandbox Code Playgroud)
我明白了
C:\Users\STEVE~1.COO\AppData\Local\Temp
Run Code Online (Sandbox Code Playgroud)
其中包含老派,波浪形式.我无法控制返回路径的函数
C:\Users\steve.cooper\AppData\Local\Temp\file.txt
Run Code Online (Sandbox Code Playgroud)
我的问题是这个; 我想检查文件是否在我的临时驱动器中,但我找不到比较它们的方法.你怎么知道这两个Windows目录;
C:\Users\STEVE~1.COO\AppData\Local\Temp
C:\Users\steve.cooper\AppData\Local\Temp
Run Code Online (Sandbox Code Playgroud)
是相同的?
这是使用标准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
Run Code Online (Sandbox Code Playgroud)
您将需要来自http://sourceforge.net/projects/pywin32/的 python win32 扩展,或者我使用 ActiveState 打包的 python
它们包括函数 win32file.GetLongPathName ,它将把 8.3 版本转换为完整路径。