我有一个需要存储用户数据的python桌面应用程序。在Windows上通常是%USERPROFILE%\Application Data\AppName\,在OSX上通常是~/Library/Application Support/AppName/,在其他* nixes上通常是~/.appname/。
%USERPROFILE%\Application Data\AppName\
~/Library/Application Support/AppName/
~/.appname/
标准库中有一个函数os.path.expanduser,它将为我提供用户的主目录,但我知道至少在Windows上,“应用程序数据”已本地化为用户的语言。OSX也可能是这样。
os.path.expanduser
获取此位置的正确方法是什么?
更新: 一些进一步的研究表明,在OSX上获得此功能的正确方法是使用功能NSSearchPathDirectory,但这就是Cocoa,因此它意味着调用PyObjC桥…
好吧,我不想成为回答我自己问题的人,但似乎没人知道。我留下后人的答案。
APPNAME = "MyApp" import sys from os import path, environ if sys.platform == 'darwin': from AppKit import NSSearchPathForDirectoriesInDomains # http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSSearchPathForDirectoriesInDomains # NSApplicationSupportDirectory = 14 # NSUserDomainMask = 1 # True for expanding the tilde into a fully qualified path appdata = path.join(NSSearchPathForDirectoriesInDomains(14, 1, True)[0], APPNAME) elif sys.platform == 'win32': appdata = path.join(environ['APPDATA'], APPNAME) else: appdata = path.expanduser(path.join("~", "." + APPNAME))