Python中跨平台获取用户配置主目录的方法?

Dun*_*eal 9 python cross-platform configuration-files

我的程序需要存储一些配置文件。主要的操作系统似乎都有一个指定的位置来放置它们;例如,在 Freedesktop.org 兼容系统上,它将是存储在$XDG_CONFIG_HOME环境变量中的路径。

是否有方法(或库)可以跨主要操作系统获取此配置主目录:Windows、OS X、Linux?

Jan*_*nus 8

您可以使用该包appdirs。这是由 ActiveState 开发的,他必须在跨平台 python 方面有相当丰富的经验。

import appdirs
appdirs.user_config_dir(appname='MyApp')
Run Code Online (Sandbox Code Playgroud)

该包只是一个文件(/模块),因此如果您需要它作为一个小脚本,则只需复制您需要的内容即可。否则,该软件包可与pip和一起使用conda


Jor*_*ley 1

import os

print os.path.expanduser("~/.my_config/data")
Run Code Online (Sandbox Code Playgroud)

总是允许你写...配置文件最好存储想要的地方

通常在 Windows 上这是

os.path.expandvars("%appdata%/.my_config")
Run Code Online (Sandbox Code Playgroud)

大多数其他系统倾向于将 放在用户配置文件主管中 (~)

除非您正在寻找特定的配置文件位置(也许是与另一个软件交互......在这种情况下我们需要知道哪个软件)

  • 问题是“~/.my_config”不是配置文件的标准位置。这意味着一些缺点。例如,如果我是用户,即使是高级用户,我也将无法找到/正确重置/备份该配置。我正在尝试获取正确的标准路径来放置配置,是的,在某些版本的 Windows 中,该路径将是 %appdata%,而 OS X 可能使用另一个位置,但问题的关键是获取任何位置在所有主要平台上,(理想情况下)只有一个函数调用。 (3认同)
  • 虽然某些配置文件(例如“dot-files”)直接位于主目录下,但这不是标准位置。查看 [Freedesktop 规范](http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html),许多软件包都遵循该规范。此外,它当然不是跨平台的标准,例如在 Windows 上。 (2认同)