cross platform application configuration files

Fernando Perez fperez528 at yahoo.com
Fri Feb 28 14:15:49 EST 2003


> My question, though, is more about where to put the file,
> and how to find it again on any platform.

You may find the code below useful.  That's what I use to find what '~'
would be in a reasonably portable manner so my code doesn't barf completely
under windows if it has to run there.

Cheers,

f.



#----------------------------------------------------------------------------
class HomeDirError(Error):
    pass

def get_home_dir():
    """Return the closest possible equivalent to a 'home' directory.

    For Posix systems, this is $HOME, and on NT it's $HOMEDRIVE\$HOMEPATH.

    Currently only Posix and NT are implemented, a HomeDirError exception is
    raised for all other OSes. """ #'
    
    if os.name == 'posix':
        return os.environ['HOME']
    elif os.name == 'nt':
        # For some strange reason, win9x returns 'nt' for os.name.
        try:
            return 
os.path.join(os.environ['HOMEDRIVE'],os.environ['HOMEPATH'])
        except:
            try:
                # Use the registry to get the 'My Documents' folder.
                import _winreg as wreg
                key = wreg.OpenKey(wreg.HKEY_CURRENT_USER,
                                  
"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders")
                homedir = wreg.QueryValueEx(key,'Personal')[0]
                key.Close()
                return homedir
            except:
                return 'C:\\'
    elif os.name == 'dos':
        # Desperate, may do absurd things in classic MacOS. May work under
DOS.
        return 'C:\\'
    else:
        raise HomeDirError,'support for your operating system not
implemented.'






More information about the Python-list mailing list