Best way to store config or preferences in a multi-platform way.

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Fri May 2 12:30:24 EDT 2008


En Thu, 01 May 2008 10:30:03 -0300, Nick Craig-Wood <nick at craig-wood.com>  
escribió:

> As for where to store it, I use os.path.expanduser("~") to find the
> base directory and a bit of platform specific code.
>
> Something like this snippet
>
>     self.is_windows = sys.platform == 'win32'
>     self.home = os.path.expanduser("~")
>     if self.is_windows:
>         self.config_dir = os.path.join(self.home, "Application Data",  
> self.NAME)
>     else:
>         self.config_dir = os.path.join(self.home, "."+self.NAME)
>     if not os.path.isdir(self.config_dir):
>         os.makedirs(self.config_dir, mode=0700)
>     self.config_file = os.path.join(self.config_dir, "config")

Please don't do that if you distribute your programs. "Application Data"  
is a localized name, like "Program Files" and all special folders. On my  
Spanish version of Windows, they're "Datos de programa" y "Archivos de  
Programa" respectively, and the user may choose to move them to another  
location.
Use SHGetFolderPath to obtain the path; see  
http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx

-- 
Gabriel Genellina




More information about the Python-list mailing list