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

91

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

6个回答

162
如果你想要的话,AppData\Roaming
import os
print(os.getenv('APPDATA'))

如果您正在寻找AppData\Local,请使用。
import os
print(os.getenv('LOCALAPPDATA'))

对于 AppData\Local\Temp,你可以通过以下方式获取它,这样也可以使你的代码在不同平台上都能运行。
import tempfile
print(tempfile.gettempdir())

关于区别:

  • Roaming是一个文件夹,如果您使用漫游配置文件登录到域中的计算机,它将与服务器同步(使您能够在域中的任何计算机上登录并访问您的收藏夹、文档等)。Firefox将其信息存储在此处,因此即使使用漫游配置文件在不同计算机之间也可以拥有相同的书签。

  • Local是特定于该计算机的文件夹-此处的任何信息都不会与服务器同步。在Windows XP中,此文件夹相当于C:\ Documents and Settings \ User \ Local Settings \ Application Data。

另请参阅this answer


78
注意,这将返回“AppData\Roaming”。如果您要查找“AppData\Local”,则需要使用“%LOCALAPPDATA%”。 - Baris Demiray
如果你正在寻找 AppData\LocalLow,那么你需要使用 ..\LocalLow,因为据我所知并没有相应的环境变量。 - AnnanFay

37

您可以使用 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')

现在,pathlib通常更方便,但不幸的是,它没有实现expandvars()(https://bugs.python.org/issue21301),尽管它确实实现了`expanduser()`(https://docs.python.org/3.10/library/pathlib.html#pathlib.Path.expanduser)。 - djvg

30

虽然问题明确要求关于 Windows 特定的 %APPDATA% 目录,但也许您在这里寻找跨平台解决方案,以获取当前用户的应用程序数据目录,该目录因操作系统而异。

截至 Python 3.11,令人惊讶的是,没有内置函数来查找此目录。但是,有第三方软件包之一是 platformdirs,它提供了检索路径的功能,例如:

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

这个回答应该有更多的赞。 - cipherdragon
1
它说,应该使用platformdirs而不是appdirs,因为后者已被作者弃用(原因:platformdirsappdir更受维护的分支)。 - SolomidHero

2
您可以尝试执行以下操作:
import os
path = os.getenv('APPDATA')
array = os.listdir(path)
print array

13
这基本上与五年前给出的被接受答案相同。 OP 问如何获取路径,而不是如何枚举目录内容。 - Adrian W

-1

我打印了这个页面并感激不尽。

我还尝试在这个设备中配置"%APPDATA%",使用"notepad",但不知道如何实现建议的配置。我也复制了sotoz和Aominé的贡献者。谢谢。

efk14it。


1
目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community
1
请不要将“谢谢”作为答案。一旦您拥有足够的声望,您就可以投票支持有用的问题和答案。- 来自审核 - buddemat

-2

您可以使用名为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. 阅读文档 - 文档。
  2. GitHub - 源代码。
  3. PyPI - 包管理器(pip)。

作为 appdata 的作者,您应该查看 如何不成为垃圾邮件发送者:它说:“如果您提到您的产品[...],您必须在帖子中披露您的关联。” - Adrian W

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