Oops. Need to check not only that HAVE_DECL_ISINF is defined, but also
[python.git] / Doc / library / configparser.rst
blob1de11b9a627109950e4b680d9ea8897c32c92e82
1 :mod:`ConfigParser` --- Configuration file parser
2 =================================================
4 .. module:: ConfigParser
5    :synopsis: Configuration file parser.
7 .. moduleauthor:: Ken Manheimer <klm@zope.com>
8 .. moduleauthor:: Barry Warsaw <bwarsaw@python.org>
9 .. moduleauthor:: Eric S. Raymond <esr@thyrsus.com>
10 .. sectionauthor:: Christopher G. Petrilli <petrilli@amber.org>
12 .. note::
14    The :mod:`ConfigParser` module has been renamed to :mod:`configparser` in
15    Python 3.0.  The :term:`2to3` tool will automatically adapt imports when
16    converting your sources to 3.0.
18 .. index::
19    pair: .ini; file
20    pair: configuration; file
21    single: ini file
22    single: Windows ini file
24 This module defines the class :class:`ConfigParser`.   The :class:`ConfigParser`
25 class implements a basic configuration file parser language which provides a
26 structure similar to what you would find on Microsoft Windows INI files.  You
27 can use this to write Python programs which can be customized by end users
28 easily.
30 .. warning::
32    This library does *not* interpret or write the value-type prefixes used in the
33    Windows Registry extended version of INI syntax.
35 The configuration file consists of sections, led by a ``[section]`` header and
36 followed by ``name: value`` entries, with continuations in the style of
37 :rfc:`822` (see section 3.1.1, "LONG HEADER FIELDS"); ``name=value`` is also
38 accepted.  Note that leading whitespace is removed from values. The optional
39 values can contain format strings which refer to other values in the same
40 section, or values in a special ``DEFAULT`` section.  Additional defaults can be
41 provided on initialization and retrieval.  Lines beginning with ``'#'`` or
42 ``';'`` are ignored and may be used to provide comments.
44 For example::
46    [My Section]
47    foodir: %(dir)s/whatever
48    dir=frob
49    long: this value continues
50       in the next line
52 would resolve the ``%(dir)s`` to the value of ``dir`` (``frob`` in this case).
53 All reference expansions are done on demand.
55 Default values can be specified by passing them into the :class:`ConfigParser`
56 constructor as a dictionary.  Additional defaults  may be passed into the
57 :meth:`get` method which will override all others.
59 Sections are normally stored in a builtin dictionary. An alternative dictionary
60 type can be passed to the :class:`ConfigParser` constructor. For example, if a
61 dictionary type is passed that sorts its keys, the sections will be sorted on
62 write-back, as will be the keys within each section.
65 .. class:: RawConfigParser([defaults[, dict_type]])
67    The basic configuration object.  When *defaults* is given, it is initialized
68    into the dictionary of intrinsic defaults.  When *dict_type* is given, it will
69    be used to create the dictionary objects for the list of sections, for the
70    options within a section, and for the default values. This class does not
71    support the magical interpolation behavior.
73    .. versionadded:: 2.3
75    .. versionchanged:: 2.6
76       *dict_type* was added.
79 .. class:: ConfigParser([defaults])
81    Derived class of :class:`RawConfigParser` that implements the magical
82    interpolation feature and adds optional arguments to the :meth:`get` and
83    :meth:`items` methods.  The values in *defaults* must be appropriate for the
84    ``%()s`` string interpolation.  Note that *__name__* is an intrinsic default;
85    its value is the section name, and will override any value provided in
86    *defaults*.
88    All option names used in interpolation will be passed through the
89    :meth:`optionxform` method just like any other option name reference.  For
90    example, using the default implementation of :meth:`optionxform` (which converts
91    option names to lower case), the values ``foo %(bar)s`` and ``foo %(BAR)s`` are
92    equivalent.
95 .. class:: SafeConfigParser([defaults])
97    Derived class of :class:`ConfigParser` that implements a more-sane variant of
98    the magical interpolation feature.  This implementation is more predictable as
99    well. New applications should prefer this version if they don't need to be
100    compatible with older versions of Python.
102    .. XXX Need to explain what's safer/more predictable about it.
104    .. versionadded:: 2.3
107 .. exception:: NoSectionError
109    Exception raised when a specified section is not found.
112 .. exception:: DuplicateSectionError
114    Exception raised if :meth:`add_section` is called with the name of a section
115    that is already present.
118 .. exception:: NoOptionError
120    Exception raised when a specified option is not found in the specified  section.
123 .. exception:: InterpolationError
125    Base class for exceptions raised when problems occur performing string
126    interpolation.
129 .. exception:: InterpolationDepthError
131    Exception raised when string interpolation cannot be completed because the
132    number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`. Subclass of
133    :exc:`InterpolationError`.
136 .. exception:: InterpolationMissingOptionError
138    Exception raised when an option referenced from a value does not exist. Subclass
139    of :exc:`InterpolationError`.
141    .. versionadded:: 2.3
144 .. exception:: InterpolationSyntaxError
146    Exception raised when the source text into which substitutions are made does not
147    conform to the required syntax. Subclass of :exc:`InterpolationError`.
149    .. versionadded:: 2.3
152 .. exception:: MissingSectionHeaderError
154    Exception raised when attempting to parse a file which has no section headers.
157 .. exception:: ParsingError
159    Exception raised when errors occur attempting to parse a file.
162 .. data:: MAX_INTERPOLATION_DEPTH
164    The maximum depth for recursive interpolation for :meth:`get` when the *raw*
165    parameter is false.  This is relevant only for the :class:`ConfigParser` class.
168 .. seealso::
170    Module :mod:`shlex`
171       Support for a creating Unix shell-like mini-languages which can be used as an
172       alternate format for application configuration files.
175 .. _rawconfigparser-objects:
177 RawConfigParser Objects
178 -----------------------
180 :class:`RawConfigParser` instances have the following methods:
183 .. method:: RawConfigParser.defaults()
185    Return a dictionary containing the instance-wide defaults.
188 .. method:: RawConfigParser.sections()
190    Return a list of the sections available; ``DEFAULT`` is not included in the
191    list.
194 .. method:: RawConfigParser.add_section(section)
196    Add a section named *section* to the instance.  If a section by the given name
197    already exists, :exc:`DuplicateSectionError` is raised. If the name
198    ``DEFAULT`` (or any of it's case-insensitive variants) is passed,
199    :exc:`ValueError` is raised.
201 .. method:: RawConfigParser.has_section(section)
203    Indicates whether the named section is present in the configuration. The
204    ``DEFAULT`` section is not acknowledged.
207 .. method:: RawConfigParser.options(section)
209    Returns a list of options available in the specified *section*.
212 .. method:: RawConfigParser.has_option(section, option)
214    If the given section exists, and contains the given option, return
215    :const:`True`; otherwise return :const:`False`.
217    .. versionadded:: 1.6
220 .. method:: RawConfigParser.read(filenames)
222    Attempt to read and parse a list of filenames, returning a list of filenames
223    which were successfully parsed.  If *filenames* is a string or Unicode string,
224    it is treated as a single filename. If a file named in *filenames* cannot be
225    opened, that file will be ignored.  This is designed so that you can specify a
226    list of potential configuration file locations (for example, the current
227    directory, the user's home directory, and some system-wide directory), and all
228    existing configuration files in the list will be read.  If none of the named
229    files exist, the :class:`ConfigParser` instance will contain an empty dataset.
230    An application which requires initial values to be loaded from a file should
231    load the required file or files using :meth:`readfp` before calling :meth:`read`
232    for any optional files::
234       import ConfigParser, os
236       config = ConfigParser.ConfigParser()
237       config.readfp(open('defaults.cfg'))
238       config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')])
240    .. versionchanged:: 2.4
241       Returns list of successfully parsed filenames.
244 .. method:: RawConfigParser.readfp(fp[, filename])
246    Read and parse configuration data from the file or file-like object in *fp*
247    (only the :meth:`readline` method is used).  If *filename* is omitted and *fp*
248    has a :attr:`name` attribute, that is used for *filename*; the default is
249    ``<???>``.
252 .. method:: RawConfigParser.get(section, option)
254    Get an *option* value for the named *section*.
257 .. method:: RawConfigParser.getint(section, option)
259    A convenience method which coerces the *option* in the specified *section* to an
260    integer.
263 .. method:: RawConfigParser.getfloat(section, option)
265    A convenience method which coerces the *option* in the specified *section* to a
266    floating point number.
269 .. method:: RawConfigParser.getboolean(section, option)
271    A convenience method which coerces the *option* in the specified *section* to a
272    Boolean value.  Note that the accepted values for the option are ``"1"``,
273    ``"yes"``, ``"true"``, and ``"on"``, which cause this method to return ``True``,
274    and ``"0"``, ``"no"``, ``"false"``, and ``"off"``, which cause it to return
275    ``False``.  These string values are checked in a case-insensitive manner.  Any
276    other value will cause it to raise :exc:`ValueError`.
279 .. method:: RawConfigParser.items(section)
281    Return a list of ``(name, value)`` pairs for each option in the given *section*.
284 .. method:: RawConfigParser.set(section, option, value)
286    If the given section exists, set the given option to the specified value;
287    otherwise raise :exc:`NoSectionError`.  While it is possible to use
288    :class:`RawConfigParser` (or :class:`ConfigParser` with *raw* parameters set to
289    true) for *internal* storage of non-string values, full functionality (including
290    interpolation and output to files) can only be achieved using string values.
292    .. versionadded:: 1.6
295 .. method:: RawConfigParser.write(fileobject)
297    Write a representation of the configuration to the specified file object.  This
298    representation can be parsed by a future :meth:`read` call.
300    .. versionadded:: 1.6
303 .. method:: RawConfigParser.remove_option(section, option)
305    Remove the specified *option* from the specified *section*. If the section does
306    not exist, raise :exc:`NoSectionError`.  If the option existed to be removed,
307    return :const:`True`; otherwise return :const:`False`.
309    .. versionadded:: 1.6
312 .. method:: RawConfigParser.remove_section(section)
314    Remove the specified *section* from the configuration. If the section in fact
315    existed, return ``True``. Otherwise return ``False``.
318 .. method:: RawConfigParser.optionxform(option)
320    Transforms the option name *option* as found in an input file or as passed in by
321    client code to the form that should be used in the internal structures.  The
322    default implementation returns a lower-case version of *option*; subclasses may
323    override this or client code can set an attribute of this name on instances to
324    affect this behavior.  Setting this to :func:`str`, for example, would make
325    option names case sensitive.
328 .. _configparser-objects:
330 ConfigParser Objects
331 --------------------
333 The :class:`ConfigParser` class extends some methods of the
334 :class:`RawConfigParser` interface, adding some optional arguments.
337 .. method:: ConfigParser.get(section, option[, raw[, vars]])
339    Get an *option* value for the named *section*.  All the ``'%'`` interpolations
340    are expanded in the return values, based on the defaults passed into the
341    constructor, as well as the options *vars* provided, unless the *raw* argument
342    is true.
345 .. method:: ConfigParser.items(section[, raw[, vars]])
347    Return a list of ``(name, value)`` pairs for each option in the given *section*.
348    Optional arguments have the same meaning as for the :meth:`get` method.
350    .. versionadded:: 2.3
353 .. _safeconfigparser-objects:
355 SafeConfigParser Objects
356 ------------------------
358 The :class:`SafeConfigParser` class implements the same extended interface as
359 :class:`ConfigParser`, with the following addition:
362 .. method:: SafeConfigParser.set(section, option, value)
364    If the given section exists, set the given option to the specified value;
365    otherwise raise :exc:`NoSectionError`.  *value* must be a string (:class:`str`
366    or :class:`unicode`); if not, :exc:`TypeError` is raised.
368    .. versionadded:: 2.4
371 Examples
372 --------
374 An example of writing to a configuration file::
376    import ConfigParser
378    config = ConfigParser.RawConfigParser()
380    # When adding sections or items, add them in the reverse order of
381    # how you want them to be displayed in the actual file.
382    # In addition, please note that using RawConfigParser's and the raw
383    # mode of ConfigParser's respective set functions, you can assign
384    # non-string values to keys internally, but will receive an error
385    # when attempting to write to a file or when you get it in non-raw
386    # mode. SafeConfigParser does not allow such assignments to take place.
387    config.add_section('Section1')
388    config.set('Section1', 'int', '15')
389    config.set('Section1', 'bool', 'true')
390    config.set('Section1', 'float', '3.1415')
391    config.set('Section1', 'baz', 'fun')
392    config.set('Section1', 'bar', 'Python')
393    config.set('Section1', 'foo', '%(bar)s is %(baz)s!')
395    # Writing our configuration file to 'example.cfg'
396    with open('example.cfg', 'wb') as configfile:
397        config.write(configfile)
399 An example of reading the configuration file again::
401    import ConfigParser
403    config = ConfigParser.RawConfigParser()
404    config.read('example.cfg')
406    # getfloat() raises an exception if the value is not a float
407    # getint() and getboolean() also do this for their respective types
408    float = config.getfloat('Section1', 'float')
409    int = config.getint('Section1', 'int')
410    print float + int
412    # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.
413    # This is because we are using a RawConfigParser().
414    if config.getboolean('Section1', 'bool'):
415        print config.get('Section1', 'foo')
417 To get interpolation, you will need to use a :class:`ConfigParser` or
418 :class:`SafeConfigParser`::
420    import ConfigParser
422    config = ConfigParser.ConfigParser()
423    config.read('example.cfg')
425    # Set the third, optional argument of get to 1 if you wish to use raw mode.
426    print config.get('Section1', 'foo', 0) # -> "Python is fun!"
427    print config.get('Section1', 'foo', 1) # -> "%(bar)s is %(baz)s!"
429    # The optional fourth argument is a dict with members that will take
430    # precedence in interpolation.
431    print config.get('Section1', 'foo', 0, {'bar': 'Documentation',
432                                            'baz': 'evil'})
434 Defaults are available in all three types of ConfigParsers. They are used in
435 interpolation if an option used is not defined elsewhere. ::
437    import ConfigParser
439    # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each
440    config = ConfigParser.SafeConfigParser({'bar': 'Life', 'baz': 'hard'})
441    config.read('example.cfg')
443    print config.get('Section1', 'foo') # -> "Python is fun!"
444    config.remove_option('Section1', 'bar')
445    config.remove_option('Section1', 'baz')
446    print config.get('Section1', 'foo') # -> "Life is hard!"
448 The function ``opt_move`` below can be used to move options between sections::
450    def opt_move(config, section1, section2, option):
451        try:
452            config.set(section2, option, config.get(section1, option, 1))
453        except ConfigParser.NoSectionError:
454            # Create non-existent section
455            config.add_section(section2)
456            opt_move(config, section1, section2, option)
457        else:
458            config.remove_option(section1, option)