【问题标题】:How can I get the path to the %APPDATA% directory in Python?如何在 Python 中获取 %APPDATA% 目录的路径?
【发布时间】:2012-10-22 11:21:59
【问题描述】:

如何在 Python 中获取%APPDATA% 目录的路径?

【问题讨论】:

    标签: python appdata


    【解决方案1】:
    import os
    print os.getenv('APPDATA')
    

    【讨论】:

    • 请注意,这将返回 AppData\Roaming。如果您正在寻找AppData\Local,则需要%LOCALAPPDATA%
    • 如果您正在寻找AppData\LocalLow,您需要使用..\LocalLow,因为据我所知没有环境变量。
    【解决方案2】:

    你可以使用os.path.expandvars(path):

    返回扩展环境变量的参数。 $name${name} 形式的子字符串将替换为环境变量名称的值。格式错误的变量名称和对不存在变量的引用保持不变。

    在 Windows 上,除了 $name${name} 之外,还支持 %name% 扩展。

    这在将扩展值与其他路径组件组合时很方便。

    例子:

    from os import path
    
    sendto_dir = path.expandvars(r'%APPDATA%\Microsoft\Windows\SendTo')
    dumps_dir = path.expandvars(r'%LOCALAPPDATA%\CrashDumps')
    

    【讨论】:

    【解决方案3】:

    虽然问题明确询问了 Windows 特定的 %APPDATA% 目录,但也许您最终在这里寻找一个跨平台的解决方案来获取 当前用户的应用程序数据目录,它因操作系统而异。

    从 Python 3.10 开始,有点令人惊讶的是,没有找到该目录的内置函数。不过也有第三方包,其中最受欢迎的好像是appdirs,它提供了检索路径的功能,比如:

    • 用户数据目录 (user_data_dir)
    • 用户配置目录 (user_config_dir)
    • 用户缓存目录 (user_cache_dir)
    • 网站数据目录 (site_data_dir)
    • 站点配置目录 (site_config_dir)
    • 用户日志目录 (user_log_dir)

    【讨论】:

      【解决方案4】:

      你可以试试:

      import os
      path = os.getenv('APPDATA')
      array = os.listdir(path)
      print array
      

      【讨论】:

      • 这与五年前给出的公认答案基本相同。 OP 询问如何获取路径,而不是如何枚举目录的内容。
      【解决方案5】:

      您可以使用名为appdata 的模块。它的开发是为了访问您的应用程序的不同路径,包括应用程序数据文件夹。安装它:

      pip install appdata
      

      然后你可以这样使用它:

      from appdata import AppDataPaths
      app_paths = AppDataPaths()
      app_paths.app_data_path  # for your app data path
      app_paths.logs_path  # for logs folder path for your application
      

      它不仅允许获取应用程序数据文件夹和日志文件夹,还具有其他管理路径的功能,例如管理配置文件路径。而且它是可定制的。

      链接:

      1. Read the Docs - 文档。
      2. GitHub - 源代码。
      3. PyPI - 包管理器 (pip)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-05
        • 2012-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-26
        • 1970-01-01
        相关资源
        最近更新 更多