【发布时间】:2012-10-22 11:21:59
【问题描述】:
如何在 Python 中获取%APPDATA% 目录的路径?
【问题讨论】:
如何在 Python 中获取%APPDATA% 目录的路径?
【问题讨论】:
import os
print os.getenv('APPDATA')
【讨论】:
AppData\Roaming。如果您正在寻找AppData\Local,则需要%LOCALAPPDATA%。
AppData\LocalLow,您需要使用..\LocalLow,因为据我所知没有环境变量。
你可以使用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 通常更方便,但不幸的是does not implement expandvars(),虽然它确实 实现了expanduser()。
虽然问题明确询问了 Windows 特定的 %APPDATA% 目录,但也许您最终在这里寻找一个跨平台的解决方案来获取 当前用户的应用程序数据目录,它因操作系统而异。
从 Python 3.10 开始,有点令人惊讶的是,没有找到该目录的内置函数。不过也有第三方包,其中最受欢迎的好像是appdirs,它提供了检索路径的功能,比如:
user_data_dir)user_config_dir)user_cache_dir)site_data_dir)site_config_dir)user_log_dir)【讨论】:
你可以试试:
import os
path = os.getenv('APPDATA')
array = os.listdir(path)
print array
【讨论】:
您可以使用名为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
它不仅允许获取应用程序数据文件夹和日志文件夹,还具有其他管理路径的功能,例如管理配置文件路径。而且它是可定制的。
链接:
【讨论】: