【问题标题】:compare two windows paths, one containing tilde, in python在 python 中比较两个 Windows 路径,一个包含波浪号
【发布时间】:2010-04-29 15:12:57
【问题描述】:

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

都一样吗?

【问题讨论】:

    标签: python windows directory path string-comparison


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你需要http://sourceforge.net/projects/pywin32/的python win32扩展或者我使用ActiveState打包的python

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        • 2012-10-07
        • 1970-01-01
        • 1970-01-01
        • 2010-12-13
        相关资源
        最近更新 更多