一个小的python模块,用于确定适当的特定于平台的dir,例如“用户数据dir”。
appdirs的Python项目详细描述
问题
应用程序应使用哪个目录存储用户数据?如果在Mac OS X上运行,则 应该使用:
~/Library/Application Support/<AppName>
如果在Windows上(至少是英语Win XP),则应该是:
C:\Documents and Settings\<User>\Application Data\Local Settings\<AppAuthor>\<AppName>
或者可能:
C:\Documents and Settings\<User>\Application Data\<AppAuthor>\<AppName>
但那是另一个故事。
在linux(和其他unices)上,根据XDG spec,目录是:
~/.local/share/<AppName>
appdirs前往救援
这就是appdirs模块的用途。appdirs将 帮助您选择合适的:
- 用户数据目录(user_data_dir)
- 用户配置目录(user_config_dir)
- 用户缓存目录(user_cache_dir)
- 站点数据目录(site_data_dir)
- 站点配置目录(site_config_dir)
- 用户日志目录(user_log_dir)
而且:
- 是单个模块,因此其他python包可以包含它们自己的私有副本
- 对使用的目录名有点自以为是。寻找“意见” 应用意见时的文档和代码。
一些示例输出
在Mac OS X上:
>>> from appdirs import * >>> appname = "SuperApp" >>> appauthor = "Acme" >>> user_data_dir(appname, appauthor) '/Users/trentm/Library/Application Support/SuperApp' >>> site_data_dir(appname, appauthor) '/Library/Application Support/SuperApp' >>> user_cache_dir(appname, appauthor) '/Users/trentm/Library/Caches/SuperApp' >>> user_log_dir(appname, appauthor) '/Users/trentm/Library/Logs/SuperApp'
在Windows 7上:
>>> from appdirs import * >>> appname = "SuperApp" >>> appauthor = "Acme" >>> user_data_dir(appname, appauthor) 'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp' >>> user_data_dir(appname, appauthor, roaming=True) 'C:\\Users\\trentm\\AppData\\Roaming\\Acme\\SuperApp' >>> user_cache_dir(appname, appauthor) 'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Cache' >>> user_log_dir(appname, appauthor) 'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Logs'
在Linux上:
>>> from appdirs import * >>> appname = "SuperApp" >>> appauthor = "Acme" >>> user_data_dir(appname, appauthor) '/home/trentm/.local/share/SuperApp >>> site_data_dir(appname, appauthor) '/usr/local/share/SuperApp' >>> site_data_dir(appname, appauthor, multipath=True) '/usr/local/share/SuperApp:/usr/share/SuperApp' >>> user_cache_dir(appname, appauthor) '/home/trentm/.cache/SuperApp' >>> user_log_dir(appname, appauthor) '/home/trentm/.cache/SuperApp/log' >>> user_config_dir(appname) '/home/trentm/.config/SuperApp' >>> site_config_dir(appname) '/etc/xdg/SuperApp' >>> os.environ['XDG_CONFIG_DIRS'] = '/etc:/usr/local/etc' >>> site_config_dir(appname, multipath=True) '/etc/SuperApp:/usr/local/etc/SuperApp'
AppDirs方便
>>> from appdirs import AppDirs >>> dirs = AppDirs("SuperApp", "Acme") >>> dirs.user_data_dir '/Users/trentm/Library/Application Support/SuperApp' >>> dirs.site_data_dir '/Library/Application Support/SuperApp' >>> dirs.user_cache_dir '/Users/trentm/Library/Caches/SuperApp' >>> dirs.user_log_dir '/Users/trentm/Library/Logs/SuperApp'
每个版本的隔离
如果您有多个版本的应用程序正在使用中 能够并排运行,那么您可能需要对这些 目录:
>>> from appdirs import AppDirs >>> dirs = AppDirs("SuperApp", "Acme", version="1.0") >>> dirs.user_data_dir '/Users/trentm/Library/Application Support/SuperApp/1.0' >>> dirs.site_data_dir '/Library/Application Support/SuperApp/1.0' >>> dirs.user_cache_dir '/Users/trentm/Library/Caches/SuperApp/1.0' >>> dirs.user_log_dir '/Users/trentm/Library/Logs/SuperApp/1.0'
AppDirs更改日志
附录1.4.3
- [pr 76]python 3.6无效的转义序列不推荐修复程序
- 修复Python3.6支持
附录1.4.2
- [PR 84]允许在没有安装工具的情况下安装
- [pr 86]修复setup.py描述中的字符串分隔符
- 添加Python3.6支持
附录1.4.1
- [问题38]修复Windows PY3上的WinReg导入
- [问题55]将appname设为可选
附录1.4.0
- [PR 42]AppAuthor现在在Windows上是可选的
- [问题41]在windows、mac和类unix平台上支持jython。窗户 支持需要JNA。
- [PR 44]修复站点配置目录方法的错误行为
附录1.3.0
- [Unix,第16版]符合XDG标准,而不是因为 所有人
- [Unix]删除了对案例的无端损坏,因为*nix es是 通常区分大小写,因此弄脏不是明智之举
- [unix]修复了site_data_dir中完全错误的行为,返回result 基于xdg_数据指令,为遵守 指定xdg_data_dirs是一个多值变量
- [第6期]根据 xdg specs;在windows和mac上返回相应的*_data_dir
附录1.2.0
- [unix]将user_log_dir放在unix上的cache目录下。似乎更多 典型的。
- [第9期]让unicode在py3k上工作。
附录1.1.0
[第4期]添加AppDirs.user_log_dir。
[unix,第2期,第7期]appdirs现在符合XDG base directory spec。
[Mac,问题5]修复Mac上的site_data_dir()。
[Mac]放弃使用“碳”模块,转而使用硬编码路径;支持 现在是Python3号。
默认情况下,[windows]将“cache”追加到windows上的user_cache_dir。使用 opinion=False禁用此选项。
添加appdirs.AppDirs便利类。用法:
>>> dirs = AppDirs("SuperApp", "Acme", version="1.0") >>> dirs.user_data_dir '/Users/trentm/Library/Application Support/SuperApp/1.0'
[Windows]Cherry选择Komodo的更改将路径降级到Windows Short 路径(如果有高位字符)。
[linux]将linux上的默认值user_cache_dir()更改为单数,例如。 “~/.superapp/cache”。
[Windows]将^{TT22}$选项添加到^{TT23}$(仅用于Windows) 并将默认的user_data_dir行为更改为使用non-漫游 配置文件目录(CSIDL_LOCAL_APPDATA而不是CSIDL_APPDATA)。为什么?因为 大型漫游配置文件可能会导致登录速度问题。“只有在 “注销”行为可能会导致AppData信息出现意外。
AppDirs 1.0.1(从未发布)
于2010年7月27日开始此更改日志。在此之前,这个模块起源于 Komodo产品为applib.py,然后 作为applib/location.py(由 PyPM在ActivePython中。这基本上是 applib.py 1.0.1和applib/location.py 1.0.1。