【问题标题】:Checking whether %APPDATA% exists always returns false检查 %APPDATA% 是否存在总是返回 false
【发布时间】:2013-08-12 02:21:31
【问题描述】:

我正在尝试检查我的应用程序目录是否存在于 %APPDATA% 文件夹中。

我的问题:使用print os.path.exists("%APPDATA%"),它总是返回False,这显然是完全不正确的。为什么会发生这种情况,我该如何解决?

【问题讨论】:

    标签: python windows environment-variables


    【解决方案1】:

    你需要使用os.path.expandvars扩展环境变量:

    >>> os.path.expandvars("%APPDATA%")
    'C:\\Documents and Settings\\falsetru\\Application Data'
    >>> os.path.exists(os.path.expandvars("%APPDATA%"))
    True
    

    在不展开的情况下,"%APPDATA%" 在当前工作目录中的字面意思是%APPDATA%

    【讨论】:

    • 哦,我以为整个文件路径都被传递给了 Windows(通过 Win32 API)并扩展了它?即,只需调用FindFirstFileEx("%APPDATA%", ...);,windows 就会扩展该函数内的变量?
    • @JakeM:大多数 Win32 API 函数不扩展环境变量。
    • os.path.exists 是使用stat 实现的,它不会扩展环境变量。
    猜你喜欢
    • 2015-10-20
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2013-08-13
    • 2017-08-02
    • 2021-06-24
    相关资源
    最近更新 更多