blob: e14068c8719589313b1c3730c8dc9107695d425d [file] [log] [blame]
Georg Brandl392c6fc2008-05-25 07:25:25 +00001:mod:`ConfigParser` --- Configuration file parser
Georg Brandl8ec7f652007-08-15 14:28:01 +00002=================================================
3
Alexandre Vassalottic92fef92008-05-14 22:51:10 +00004.. module:: ConfigParser
Georg Brandl8ec7f652007-08-15 14:28:01 +00005 :synopsis: Configuration file parser.
Alexandre Vassalottie2514c62008-05-14 22:44:22 +00006
Georg Brandl8ec7f652007-08-15 14:28:01 +00007.. 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>
11
Alexandre Vassalottic92fef92008-05-14 22:51:10 +000012.. note::
Georg Brandl392c6fc2008-05-25 07:25:25 +000013
Georg Brandle92818f2009-01-03 20:47:01 +000014 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.
Alexandre Vassalottic92fef92008-05-14 22:51:10 +000017
Georg Brandl8ec7f652007-08-15 14:28:01 +000018.. index::
19 pair: .ini; file
20 pair: configuration; file
21 single: ini file
22 single: Windows ini file
23
24This module defines the class :class:`ConfigParser`. The :class:`ConfigParser`
25class implements a basic configuration file parser language which provides a
26structure similar to what you would find on Microsoft Windows INI files. You
27can use this to write Python programs which can be customized by end users
28easily.
29
Georg Brandl16a57f62009-04-27 15:29:09 +000030.. note::
Georg Brandl8ec7f652007-08-15 14:28:01 +000031
Georg Brandl16a57f62009-04-27 15:29:09 +000032 This library does *not* interpret or write the value-type prefixes used in
33 the Windows Registry extended version of INI syntax.
Georg Brandl8ec7f652007-08-15 14:28:01 +000034
35The configuration file consists of sections, led by a ``[section]`` header and
36followed by ``name: value`` entries, with continuations in the style of
Georg Brandl27f43742008-03-26 09:32:46 +000037:rfc:`822` (see section 3.1.1, "LONG HEADER FIELDS"); ``name=value`` is also
38accepted. Note that leading whitespace is removed from values. The optional
39values can contain format strings which refer to other values in the same
40section, or values in a special ``DEFAULT`` section. Additional defaults can be
41provided on initialization and retrieval. Lines beginning with ``'#'`` or
42``';'`` are ignored and may be used to provide comments.
Georg Brandl8ec7f652007-08-15 14:28:01 +000043
44For example::
45
46 [My Section]
47 foodir: %(dir)s/whatever
48 dir=frob
Georg Brandl27f43742008-03-26 09:32:46 +000049 long: this value continues
50 in the next line
Georg Brandl8ec7f652007-08-15 14:28:01 +000051
52would resolve the ``%(dir)s`` to the value of ``dir`` (``frob`` in this case).
53All reference expansions are done on demand.
54
55Default values can be specified by passing them into the :class:`ConfigParser`
56constructor as a dictionary. Additional defaults may be passed into the
57:meth:`get` method which will override all others.
58
Georg Brandld7d4fd72009-07-26 14:37:28 +000059Sections are normally stored in a built-in dictionary. An alternative dictionary
Georg Brandl8ec7f652007-08-15 14:28:01 +000060type can be passed to the :class:`ConfigParser` constructor. For example, if a
61dictionary type is passed that sorts its keys, the sections will be sorted on
62write-back, as will be the keys within each section.
63
64
Fred Drakecc43b562010-02-19 05:24:30 +000065.. class:: RawConfigParser([defaults[, dict_type[, allow_no_value]]])
Georg Brandl8ec7f652007-08-15 14:28:01 +000066
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
Fred Drakecc43b562010-02-19 05:24:30 +000070 options within a section, and for the default values. When *allow_no_value*
71 is true (default: ``False``), options without values are accepted; the value
72 presented for these is ``None``.
73
74 This class does not
Georg Brandl8ec7f652007-08-15 14:28:01 +000075 support the magical interpolation behavior.
76
77 .. versionadded:: 2.3
78
79 .. versionchanged:: 2.6
80 *dict_type* was added.
81
Raymond Hettingere89b8e92009-03-03 05:00:37 +000082 .. versionchanged:: 2.7
83 The default *dict_type* is :class:`collections.OrderedDict`.
Fred Drakecc43b562010-02-19 05:24:30 +000084 *allow_no_value* was added.
Raymond Hettingere89b8e92009-03-03 05:00:37 +000085
Georg Brandl8ec7f652007-08-15 14:28:01 +000086
Fred Drakecc43b562010-02-19 05:24:30 +000087.. class:: ConfigParser([defaults[, dict_type[, allow_no_value]]])
Georg Brandl8ec7f652007-08-15 14:28:01 +000088
89 Derived class of :class:`RawConfigParser` that implements the magical
90 interpolation feature and adds optional arguments to the :meth:`get` and
91 :meth:`items` methods. The values in *defaults* must be appropriate for the
92 ``%()s`` string interpolation. Note that *__name__* is an intrinsic default;
93 its value is the section name, and will override any value provided in
94 *defaults*.
95
96 All option names used in interpolation will be passed through the
97 :meth:`optionxform` method just like any other option name reference. For
98 example, using the default implementation of :meth:`optionxform` (which converts
99 option names to lower case), the values ``foo %(bar)s`` and ``foo %(BAR)s`` are
100 equivalent.
101
Raymond Hettingere89b8e92009-03-03 05:00:37 +0000102 .. versionadded:: 2.3
103
104 .. versionchanged:: 2.6
105 *dict_type* was added.
106
107 .. versionchanged:: 2.7
108 The default *dict_type* is :class:`collections.OrderedDict`.
Fred Drakecc43b562010-02-19 05:24:30 +0000109 *allow_no_value* was added.
Raymond Hettingere89b8e92009-03-03 05:00:37 +0000110
Georg Brandl8ec7f652007-08-15 14:28:01 +0000111
Fred Drakecc43b562010-02-19 05:24:30 +0000112.. class:: SafeConfigParser([defaults[, dict_type[, allow_no_value]]])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000113
114 Derived class of :class:`ConfigParser` that implements a more-sane variant of
115 the magical interpolation feature. This implementation is more predictable as
116 well. New applications should prefer this version if they don't need to be
117 compatible with older versions of Python.
118
Georg Brandlb19be572007-12-29 10:57:00 +0000119 .. XXX Need to explain what's safer/more predictable about it.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000120
121 .. versionadded:: 2.3
122
Raymond Hettingere89b8e92009-03-03 05:00:37 +0000123 .. versionchanged:: 2.6
124 *dict_type* was added.
125
126 .. versionchanged:: 2.7
127 The default *dict_type* is :class:`collections.OrderedDict`.
Fred Drakecc43b562010-02-19 05:24:30 +0000128 *allow_no_value* was added.
Raymond Hettingere89b8e92009-03-03 05:00:37 +0000129
Georg Brandl8ec7f652007-08-15 14:28:01 +0000130
131.. exception:: NoSectionError
132
133 Exception raised when a specified section is not found.
134
135
136.. exception:: DuplicateSectionError
137
138 Exception raised if :meth:`add_section` is called with the name of a section
139 that is already present.
140
141
142.. exception:: NoOptionError
143
144 Exception raised when a specified option is not found in the specified section.
145
146
147.. exception:: InterpolationError
148
149 Base class for exceptions raised when problems occur performing string
150 interpolation.
151
152
153.. exception:: InterpolationDepthError
154
155 Exception raised when string interpolation cannot be completed because the
156 number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`. Subclass of
157 :exc:`InterpolationError`.
158
159
160.. exception:: InterpolationMissingOptionError
161
162 Exception raised when an option referenced from a value does not exist. Subclass
163 of :exc:`InterpolationError`.
164
165 .. versionadded:: 2.3
166
167
168.. exception:: InterpolationSyntaxError
169
170 Exception raised when the source text into which substitutions are made does not
171 conform to the required syntax. Subclass of :exc:`InterpolationError`.
172
173 .. versionadded:: 2.3
174
175
176.. exception:: MissingSectionHeaderError
177
178 Exception raised when attempting to parse a file which has no section headers.
179
180
181.. exception:: ParsingError
182
183 Exception raised when errors occur attempting to parse a file.
184
185
186.. data:: MAX_INTERPOLATION_DEPTH
187
188 The maximum depth for recursive interpolation for :meth:`get` when the *raw*
189 parameter is false. This is relevant only for the :class:`ConfigParser` class.
190
191
192.. seealso::
193
194 Module :mod:`shlex`
195 Support for a creating Unix shell-like mini-languages which can be used as an
196 alternate format for application configuration files.
197
198
199.. _rawconfigparser-objects:
200
201RawConfigParser Objects
202-----------------------
203
204:class:`RawConfigParser` instances have the following methods:
205
206
207.. method:: RawConfigParser.defaults()
208
209 Return a dictionary containing the instance-wide defaults.
210
211
212.. method:: RawConfigParser.sections()
213
214 Return a list of the sections available; ``DEFAULT`` is not included in the
215 list.
216
217
218.. method:: RawConfigParser.add_section(section)
219
220 Add a section named *section* to the instance. If a section by the given name
Facundo Batistab12f0b52008-02-23 12:46:10 +0000221 already exists, :exc:`DuplicateSectionError` is raised. If the name
222 ``DEFAULT`` (or any of it's case-insensitive variants) is passed,
223 :exc:`ValueError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000224
225.. method:: RawConfigParser.has_section(section)
226
227 Indicates whether the named section is present in the configuration. The
228 ``DEFAULT`` section is not acknowledged.
229
230
231.. method:: RawConfigParser.options(section)
232
233 Returns a list of options available in the specified *section*.
234
235
236.. method:: RawConfigParser.has_option(section, option)
237
238 If the given section exists, and contains the given option, return
239 :const:`True`; otherwise return :const:`False`.
240
241 .. versionadded:: 1.6
242
243
244.. method:: RawConfigParser.read(filenames)
245
246 Attempt to read and parse a list of filenames, returning a list of filenames
247 which were successfully parsed. If *filenames* is a string or Unicode string,
248 it is treated as a single filename. If a file named in *filenames* cannot be
249 opened, that file will be ignored. This is designed so that you can specify a
250 list of potential configuration file locations (for example, the current
251 directory, the user's home directory, and some system-wide directory), and all
252 existing configuration files in the list will be read. If none of the named
253 files exist, the :class:`ConfigParser` instance will contain an empty dataset.
254 An application which requires initial values to be loaded from a file should
255 load the required file or files using :meth:`readfp` before calling :meth:`read`
256 for any optional files::
257
Benjamin Petersona7b55a32009-02-20 03:31:23 +0000258 import ConfigParser, os
Georg Brandl8ec7f652007-08-15 14:28:01 +0000259
Georg Brandl392c6fc2008-05-25 07:25:25 +0000260 config = ConfigParser.ConfigParser()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000261 config.readfp(open('defaults.cfg'))
262 config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')])
263
264 .. versionchanged:: 2.4
265 Returns list of successfully parsed filenames.
266
267
268.. method:: RawConfigParser.readfp(fp[, filename])
269
270 Read and parse configuration data from the file or file-like object in *fp*
271 (only the :meth:`readline` method is used). If *filename* is omitted and *fp*
272 has a :attr:`name` attribute, that is used for *filename*; the default is
273 ``<???>``.
274
275
276.. method:: RawConfigParser.get(section, option)
277
278 Get an *option* value for the named *section*.
279
280
281.. method:: RawConfigParser.getint(section, option)
282
283 A convenience method which coerces the *option* in the specified *section* to an
284 integer.
285
286
287.. method:: RawConfigParser.getfloat(section, option)
288
289 A convenience method which coerces the *option* in the specified *section* to a
290 floating point number.
291
292
293.. method:: RawConfigParser.getboolean(section, option)
294
295 A convenience method which coerces the *option* in the specified *section* to a
296 Boolean value. Note that the accepted values for the option are ``"1"``,
297 ``"yes"``, ``"true"``, and ``"on"``, which cause this method to return ``True``,
298 and ``"0"``, ``"no"``, ``"false"``, and ``"off"``, which cause it to return
299 ``False``. These string values are checked in a case-insensitive manner. Any
300 other value will cause it to raise :exc:`ValueError`.
301
302
303.. method:: RawConfigParser.items(section)
304
305 Return a list of ``(name, value)`` pairs for each option in the given *section*.
306
307
308.. method:: RawConfigParser.set(section, option, value)
309
310 If the given section exists, set the given option to the specified value;
311 otherwise raise :exc:`NoSectionError`. While it is possible to use
312 :class:`RawConfigParser` (or :class:`ConfigParser` with *raw* parameters set to
313 true) for *internal* storage of non-string values, full functionality (including
314 interpolation and output to files) can only be achieved using string values.
315
316 .. versionadded:: 1.6
317
318
319.. method:: RawConfigParser.write(fileobject)
320
321 Write a representation of the configuration to the specified file object. This
322 representation can be parsed by a future :meth:`read` call.
323
324 .. versionadded:: 1.6
325
326
327.. method:: RawConfigParser.remove_option(section, option)
328
329 Remove the specified *option* from the specified *section*. If the section does
330 not exist, raise :exc:`NoSectionError`. If the option existed to be removed,
331 return :const:`True`; otherwise return :const:`False`.
332
333 .. versionadded:: 1.6
334
335
336.. method:: RawConfigParser.remove_section(section)
337
338 Remove the specified *section* from the configuration. If the section in fact
339 existed, return ``True``. Otherwise return ``False``.
340
341
342.. method:: RawConfigParser.optionxform(option)
343
Georg Brandldc020522009-10-23 08:14:44 +0000344 Transforms the option name *option* as found in an input file or as passed in
345 by client code to the form that should be used in the internal structures.
346 The default implementation returns a lower-case version of *option*;
347 subclasses may override this or client code can set an attribute of this name
348 on instances to affect this behavior.
349
350 You don't necessarily need to subclass a ConfigParser to use this method, you
351 can also re-set it on an instance, to a function that takes a string
352 argument. Setting it to ``str``, for example, would make option names case
353 sensitive::
354
355 cfgparser = ConfigParser()
356 ...
357 cfgparser.optionxform = str
Georg Brandl8ec7f652007-08-15 14:28:01 +0000358
Fred Draked617cba2009-10-23 13:04:51 +0000359 Note that when reading configuration files, whitespace around the
Georg Brandl5460ff92009-10-24 10:04:19 +0000360 option names are stripped before :meth:`optionxform` is called.
Fred Draked617cba2009-10-23 13:04:51 +0000361
Georg Brandl8ec7f652007-08-15 14:28:01 +0000362
363.. _configparser-objects:
364
365ConfigParser Objects
366--------------------
367
368The :class:`ConfigParser` class extends some methods of the
369:class:`RawConfigParser` interface, adding some optional arguments.
370
371
372.. method:: ConfigParser.get(section, option[, raw[, vars]])
373
374 Get an *option* value for the named *section*. All the ``'%'`` interpolations
375 are expanded in the return values, based on the defaults passed into the
376 constructor, as well as the options *vars* provided, unless the *raw* argument
377 is true.
378
379
380.. method:: ConfigParser.items(section[, raw[, vars]])
381
382 Return a list of ``(name, value)`` pairs for each option in the given *section*.
383 Optional arguments have the same meaning as for the :meth:`get` method.
384
385 .. versionadded:: 2.3
386
387
388.. _safeconfigparser-objects:
389
390SafeConfigParser Objects
391------------------------
392
393The :class:`SafeConfigParser` class implements the same extended interface as
394:class:`ConfigParser`, with the following addition:
395
396
397.. method:: SafeConfigParser.set(section, option, value)
398
399 If the given section exists, set the given option to the specified value;
400 otherwise raise :exc:`NoSectionError`. *value* must be a string (:class:`str`
401 or :class:`unicode`); if not, :exc:`TypeError` is raised.
402
403 .. versionadded:: 2.4
404
Georg Brandl430e3622007-11-29 17:02:34 +0000405
406Examples
407--------
408
409An example of writing to a configuration file::
410
Georg Brandl392c6fc2008-05-25 07:25:25 +0000411 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000412
Georg Brandl392c6fc2008-05-25 07:25:25 +0000413 config = ConfigParser.RawConfigParser()
414
Georg Brandl430e3622007-11-29 17:02:34 +0000415 # When adding sections or items, add them in the reverse order of
416 # how you want them to be displayed in the actual file.
417 # In addition, please note that using RawConfigParser's and the raw
418 # mode of ConfigParser's respective set functions, you can assign
419 # non-string values to keys internally, but will receive an error
420 # when attempting to write to a file or when you get it in non-raw
421 # mode. SafeConfigParser does not allow such assignments to take place.
422 config.add_section('Section1')
423 config.set('Section1', 'int', '15')
424 config.set('Section1', 'bool', 'true')
425 config.set('Section1', 'float', '3.1415')
426 config.set('Section1', 'baz', 'fun')
427 config.set('Section1', 'bar', 'Python')
428 config.set('Section1', 'foo', '%(bar)s is %(baz)s!')
Georg Brandl392c6fc2008-05-25 07:25:25 +0000429
Georg Brandl430e3622007-11-29 17:02:34 +0000430 # Writing our configuration file to 'example.cfg'
431 with open('example.cfg', 'wb') as configfile:
432 config.write(configfile)
433
434An example of reading the configuration file again::
435
Georg Brandl392c6fc2008-05-25 07:25:25 +0000436 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000437
Georg Brandl392c6fc2008-05-25 07:25:25 +0000438 config = ConfigParser.RawConfigParser()
Georg Brandl430e3622007-11-29 17:02:34 +0000439 config.read('example.cfg')
440
441 # getfloat() raises an exception if the value is not a float
442 # getint() and getboolean() also do this for their respective types
443 float = config.getfloat('Section1', 'float')
444 int = config.getint('Section1', 'int')
445 print float + int
446
447 # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.
448 # This is because we are using a RawConfigParser().
449 if config.getboolean('Section1', 'bool'):
450 print config.get('Section1', 'foo')
451
452To get interpolation, you will need to use a :class:`ConfigParser` or
453:class:`SafeConfigParser`::
454
Georg Brandl392c6fc2008-05-25 07:25:25 +0000455 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000456
Georg Brandl392c6fc2008-05-25 07:25:25 +0000457 config = ConfigParser.ConfigParser()
Georg Brandl430e3622007-11-29 17:02:34 +0000458 config.read('example.cfg')
459
460 # Set the third, optional argument of get to 1 if you wish to use raw mode.
461 print config.get('Section1', 'foo', 0) # -> "Python is fun!"
462 print config.get('Section1', 'foo', 1) # -> "%(bar)s is %(baz)s!"
463
464 # The optional fourth argument is a dict with members that will take
465 # precedence in interpolation.
466 print config.get('Section1', 'foo', 0, {'bar': 'Documentation',
467 'baz': 'evil'})
468
Georg Brandl392c6fc2008-05-25 07:25:25 +0000469Defaults are available in all three types of ConfigParsers. They are used in
Georg Brandl430e3622007-11-29 17:02:34 +0000470interpolation if an option used is not defined elsewhere. ::
471
Georg Brandl392c6fc2008-05-25 07:25:25 +0000472 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000473
474 # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each
Georg Brandl392c6fc2008-05-25 07:25:25 +0000475 config = ConfigParser.SafeConfigParser({'bar': 'Life', 'baz': 'hard'})
Georg Brandl430e3622007-11-29 17:02:34 +0000476 config.read('example.cfg')
Georg Brandl392c6fc2008-05-25 07:25:25 +0000477
Georg Brandl430e3622007-11-29 17:02:34 +0000478 print config.get('Section1', 'foo') # -> "Python is fun!"
479 config.remove_option('Section1', 'bar')
480 config.remove_option('Section1', 'baz')
481 print config.get('Section1', 'foo') # -> "Life is hard!"
482
483The function ``opt_move`` below can be used to move options between sections::
484
485 def opt_move(config, section1, section2, option):
486 try:
487 config.set(section2, option, config.get(section1, option, 1))
Georg Brandl392c6fc2008-05-25 07:25:25 +0000488 except ConfigParser.NoSectionError:
Georg Brandl430e3622007-11-29 17:02:34 +0000489 # Create non-existent section
490 config.add_section(section2)
491 opt_move(config, section1, section2, option)
Georg Brandl960b1862008-01-21 16:28:13 +0000492 else:
493 config.remove_option(section1, option)
Fred Drakecc43b562010-02-19 05:24:30 +0000494
495Some configuration files are known to include settings without values, but which
496otherwise conform to the syntax supported by :mod:`ConfigParser`. The
497*allow_no_value* parameter to the constructor can be used to indicate that such
498values should be accepted:
499
500.. doctest::
501
502 >>> import ConfigParser
503 >>> import io
504
505 >>> sample_config = """
506 ... [mysqld]
507 ... user = mysql
508 ... pid-file = /var/run/mysqld/mysqld.pid
509 ... skip-external-locking
510 ... old_passwords = 1
511 ... skip-bdb
512 ... skip-innodb
513 ... """
514 >>> config = ConfigParser.RawConfigParser(allow_no_value=True)
515 >>> config.readfp(io.BytesIO(sample_config))
516
517 >>> # Settings with values are treated as before:
518 >>> config.get("mysqld", "user")
519 'mysql'
520
521 >>> # Settings without values provide None:
522 >>> config.get("mysqld", "skip-bdb")
523
524 >>> # Settings which aren't specified still raise an error:
525 >>> config.get("mysqld", "does-not-exist")
526 Traceback (most recent call last):
527 ...
528 ConfigParser.NoOptionError: No option 'does-not-exist' in section: 'mysqld'