On 2013.11.25 14:48, Eamonn Rea wrote: > I've heard that there is a library that allows you to get the appdata > directory for a given OS, but I'd like to do it myself, as a learning > experience. > > Is there a built in way to get a users Appdata Directory? For example on OS X > it's in '~/Library//Application Support/'. I can get the OS just fine > (sys.platform and then storing it in my own way; example: darwin = OS X, just > for my own readability), and I can get the home directory just fine > (expanduser), but I have no idea how to get the appdata directory. > > One way I could think of doing it would be to just detect the os and join the > string on like so (completely untested, but an idea); > > if os == 'OS X': > appdata_dir = os.path.join(home_dir, '/Application Support/') > > But then that arises the problem of cross platform compatibility. > > So is here a good, cross platform solution to this problem? I don't know about OS X, but on Windows Vista and later, there is os.environ['APPDATA']. I don't explicitly check for OS; instead, I see if APPDATA exists as an environment variable: try: user_data_dir = os.path.join(os.environ['APPDATA'], 'NoiseBot') except KeyError: user_data_dir = os.path.join(os.environ['HOME'], '.NoiseBot')
I didn't even know that such a thing existed on OS X. -- CPython 3.3.2 | Windows NT 6.2.9200 / FreeBSD 10.0 -- https://mail.python.org/mailman/listinfo/python-list