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

Carl Banks pavlovevidence at gmail.com
Fri May 2 12:47:56 EDT 2008


On May 2, 12:30 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
wrote:
> En Thu, 01 May 2008 10:30:03 -0300, Nick Craig-Wood <n... 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

Thanks for the heads up: wasn't aware those guys were localized.

(Though I wonder why they bothered: Microsoft gives typical users a
guilt trip for putting their own files anywhere other than My
Documents, or Mis Documentos, or whatever.)


Carl Banks



More information about the Python-list mailing list