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

Carl Banks pavlovevidence at gmail.com
Thu May 1 12:45:28 EDT 2008


On May 1, 12:11 pm, Jon Ribbens <jon+use... at unequivocal.co.uk> wrote:
> On 2008-05-01, Ivan Illarionov <ivan.illario... at gmail.com> wrote:
>
> > IMO .ini-like config files are from the stone age. The modern approach is
> > to use YAML (http://www.yaml.org).
>
> You mean YAML isn't a joke!? It's so ludicrously overcomplicated,
> and so comprehensively and completely fails to achieve its stated
> main goal of being "readable by humans", that I had assumed it
> was an April Fool along the lines of Intercal or brainf***.


YAML, ISTM, took a simple concept that worked for small,
straightforward data, and tried to make into a format that could
anything anywhere, with disastrous results.  It's not unlike Perl in
this regard.  It's quite ridiculous.


My recommendation to the OP would be:

If you intend to write a GUI that completely sets all the options, use
XML.  You can bet there are some users who would prefer text editing
options files, and XML, while not the most readable format available,
at least gives users the option.

If you don't intend to write a GUI to do that, write a simple text
file parser (if the options are simple), use ConfigParser, or use a
Python file that you exec.

Store the file in $HOME/.appname/config.ext on Unix, $USERDIR/
ApplicationData/Appname/config.ext on Windows.  I don't recommend
using the Windows registry to store options; use it to modify Windows
behavior (like file associations) but keep your own program's options
in your own file.


Carl Banks



More information about the Python-list mailing list