blob: 878685c74816d37b44af86a0735375680ea82cb6 [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 Brandl734373c2009-01-03 21:55:17 +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 Brandl38853142009-04-28 18:23:28 +000030.. note::
Georg Brandl8ec7f652007-08-15 14:28:01 +000031
Georg Brandl38853142009-04-28 18:23:28 +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 Brandl4ae4f872009-10-27 14:37:48 +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
65.. class:: RawConfigParser([defaults[, dict_type]])
66
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.
72
73 .. versionadded:: 2.3
74
75 .. versionchanged:: 2.6
76 *dict_type* was added.
77
78
Raymond Hettinger4a9fda42009-03-01 02:07:25 +000079.. class:: ConfigParser([defaults[, dict_type]])
Georg Brandl8ec7f652007-08-15 14:28:01 +000080
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*.
87
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.
93
94
Raymond Hettinger4a9fda42009-03-01 02:07:25 +000095.. class:: SafeConfigParser([defaults[, dict_type]])
Georg Brandl8ec7f652007-08-15 14:28:01 +000096
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.
101
Georg Brandlb19be572007-12-29 10:57:00 +0000102 .. XXX Need to explain what's safer/more predictable about it.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000103
104 .. versionadded:: 2.3
105
106
107.. exception:: NoSectionError
108
109 Exception raised when a specified section is not found.
110
111
112.. exception:: DuplicateSectionError
113
114 Exception raised if :meth:`add_section` is called with the name of a section
115 that is already present.
116
117
118.. exception:: NoOptionError
119
120 Exception raised when a specified option is not found in the specified section.
121
122
123.. exception:: InterpolationError
124
125 Base class for exceptions raised when problems occur performing string
126 interpolation.
127
128
129.. exception:: InterpolationDepthError
130
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`.
134
135
136.. exception:: InterpolationMissingOptionError
137
138 Exception raised when an option referenced from a value does not exist. Subclass
139 of :exc:`InterpolationError`.
140
141 .. versionadded:: 2.3
142
143
144.. exception:: InterpolationSyntaxError
145
146 Exception raised when the source text into which substitutions are made does not
147 conform to the required syntax. Subclass of :exc:`InterpolationError`.
148
149 .. versionadded:: 2.3
150
151
152.. exception:: MissingSectionHeaderError
153
154 Exception raised when attempting to parse a file which has no section headers.
155
156
157.. exception:: ParsingError
158
159 Exception raised when errors occur attempting to parse a file.
160
161
162.. data:: MAX_INTERPOLATION_DEPTH
163
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.
166
167
168.. seealso::
169
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.
173
174
175.. _rawconfigparser-objects:
176
177RawConfigParser Objects
178-----------------------
179
180:class:`RawConfigParser` instances have the following methods:
181
182
183.. method:: RawConfigParser.defaults()
184
185 Return a dictionary containing the instance-wide defaults.
186
187
188.. method:: RawConfigParser.sections()
189
190 Return a list of the sections available; ``DEFAULT`` is not included in the
191 list.
192
193
194.. method:: RawConfigParser.add_section(section)
195
196 Add a section named *section* to the instance. If a section by the given name
Facundo Batistab12f0b52008-02-23 12:46:10 +0000197 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.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000200
201.. method:: RawConfigParser.has_section(section)
202
203 Indicates whether the named section is present in the configuration. The
204 ``DEFAULT`` section is not acknowledged.
205
206
207.. method:: RawConfigParser.options(section)
208
209 Returns a list of options available in the specified *section*.
210
211
212.. method:: RawConfigParser.has_option(section, option)
213
214 If the given section exists, and contains the given option, return
215 :const:`True`; otherwise return :const:`False`.
216
217 .. versionadded:: 1.6
218
219
220.. method:: RawConfigParser.read(filenames)
221
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::
233
Georg Brandl392c6fc2008-05-25 07:25:25 +0000234 import ConfigParser, os
Georg Brandl8ec7f652007-08-15 14:28:01 +0000235
Georg Brandl392c6fc2008-05-25 07:25:25 +0000236 config = ConfigParser.ConfigParser()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000237 config.readfp(open('defaults.cfg'))
238 config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')])
239
240 .. versionchanged:: 2.4
241 Returns list of successfully parsed filenames.
242
243
244.. method:: RawConfigParser.readfp(fp[, filename])
245
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 ``<???>``.
250
251
252.. method:: RawConfigParser.get(section, option)
253
254 Get an *option* value for the named *section*.
255
256
257.. method:: RawConfigParser.getint(section, option)
258
259 A convenience method which coerces the *option* in the specified *section* to an
260 integer.
261
262
263.. method:: RawConfigParser.getfloat(section, option)
264
265 A convenience method which coerces the *option* in the specified *section* to a
266 floating point number.
267
268
269.. method:: RawConfigParser.getboolean(section, option)
270
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`.
277
278
279.. method:: RawConfigParser.items(section)
280
281 Return a list of ``(name, value)`` pairs for each option in the given *section*.
282
283
284.. method:: RawConfigParser.set(section, option, value)
285
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.
291
292 .. versionadded:: 1.6
293
294
295.. method:: RawConfigParser.write(fileobject)
296
297 Write a representation of the configuration to the specified file object. This
298 representation can be parsed by a future :meth:`read` call.
299
300 .. versionadded:: 1.6
301
302
303.. method:: RawConfigParser.remove_option(section, option)
304
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`.
308
309 .. versionadded:: 1.6
310
311
312.. method:: RawConfigParser.remove_section(section)
313
314 Remove the specified *section* from the configuration. If the section in fact
315 existed, return ``True``. Otherwise return ``False``.
316
317
318.. method:: RawConfigParser.optionxform(option)
319
Georg Brandl5d2eb342009-10-27 15:08:27 +0000320 Transforms the option name *option* as found in an input file or as passed in
321 by client code to the form that should be used in the internal structures.
322 The default implementation returns a lower-case version of *option*;
323 subclasses may override this or client code can set an attribute of this name
324 on instances to affect this behavior.
325
326 You don't necessarily need to subclass a ConfigParser to use this method, you
327 can also re-set it on an instance, to a function that takes a string
328 argument. Setting it to ``str``, for example, would make option names case
329 sensitive::
330
331 cfgparser = ConfigParser()
332 ...
333 cfgparser.optionxform = str
334
335 Note that when reading configuration files, whitespace around the
336 option names are stripped before :meth:`optionxform` is called.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000337
338
339.. _configparser-objects:
340
341ConfigParser Objects
342--------------------
343
344The :class:`ConfigParser` class extends some methods of the
345:class:`RawConfigParser` interface, adding some optional arguments.
346
347
348.. method:: ConfigParser.get(section, option[, raw[, vars]])
349
350 Get an *option* value for the named *section*. All the ``'%'`` interpolations
351 are expanded in the return values, based on the defaults passed into the
352 constructor, as well as the options *vars* provided, unless the *raw* argument
353 is true.
354
355
356.. method:: ConfigParser.items(section[, raw[, vars]])
357
358 Return a list of ``(name, value)`` pairs for each option in the given *section*.
359 Optional arguments have the same meaning as for the :meth:`get` method.
360
361 .. versionadded:: 2.3
362
363
364.. _safeconfigparser-objects:
365
366SafeConfigParser Objects
367------------------------
368
369The :class:`SafeConfigParser` class implements the same extended interface as
370:class:`ConfigParser`, with the following addition:
371
372
373.. method:: SafeConfigParser.set(section, option, value)
374
375 If the given section exists, set the given option to the specified value;
376 otherwise raise :exc:`NoSectionError`. *value* must be a string (:class:`str`
377 or :class:`unicode`); if not, :exc:`TypeError` is raised.
378
379 .. versionadded:: 2.4
380
Georg Brandl430e3622007-11-29 17:02:34 +0000381
382Examples
383--------
384
385An example of writing to a configuration file::
386
Georg Brandl392c6fc2008-05-25 07:25:25 +0000387 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000388
Georg Brandl392c6fc2008-05-25 07:25:25 +0000389 config = ConfigParser.RawConfigParser()
390
Georg Brandl430e3622007-11-29 17:02:34 +0000391 # When adding sections or items, add them in the reverse order of
392 # how you want them to be displayed in the actual file.
393 # In addition, please note that using RawConfigParser's and the raw
394 # mode of ConfigParser's respective set functions, you can assign
395 # non-string values to keys internally, but will receive an error
396 # when attempting to write to a file or when you get it in non-raw
397 # mode. SafeConfigParser does not allow such assignments to take place.
398 config.add_section('Section1')
399 config.set('Section1', 'int', '15')
400 config.set('Section1', 'bool', 'true')
401 config.set('Section1', 'float', '3.1415')
402 config.set('Section1', 'baz', 'fun')
403 config.set('Section1', 'bar', 'Python')
404 config.set('Section1', 'foo', '%(bar)s is %(baz)s!')
Georg Brandl392c6fc2008-05-25 07:25:25 +0000405
Georg Brandl430e3622007-11-29 17:02:34 +0000406 # Writing our configuration file to 'example.cfg'
407 with open('example.cfg', 'wb') as configfile:
408 config.write(configfile)
409
410An example of reading the configuration file again::
411
Georg Brandl392c6fc2008-05-25 07:25:25 +0000412 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000413
Georg Brandl392c6fc2008-05-25 07:25:25 +0000414 config = ConfigParser.RawConfigParser()
Georg Brandl430e3622007-11-29 17:02:34 +0000415 config.read('example.cfg')
416
417 # getfloat() raises an exception if the value is not a float
418 # getint() and getboolean() also do this for their respective types
419 float = config.getfloat('Section1', 'float')
420 int = config.getint('Section1', 'int')
421 print float + int
422
423 # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.
424 # This is because we are using a RawConfigParser().
425 if config.getboolean('Section1', 'bool'):
426 print config.get('Section1', 'foo')
427
428To get interpolation, you will need to use a :class:`ConfigParser` or
429:class:`SafeConfigParser`::
430
Georg Brandl392c6fc2008-05-25 07:25:25 +0000431 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000432
Georg Brandl392c6fc2008-05-25 07:25:25 +0000433 config = ConfigParser.ConfigParser()
Georg Brandl430e3622007-11-29 17:02:34 +0000434 config.read('example.cfg')
435
436 # Set the third, optional argument of get to 1 if you wish to use raw mode.
437 print config.get('Section1', 'foo', 0) # -> "Python is fun!"
438 print config.get('Section1', 'foo', 1) # -> "%(bar)s is %(baz)s!"
439
440 # The optional fourth argument is a dict with members that will take
441 # precedence in interpolation.
442 print config.get('Section1', 'foo', 0, {'bar': 'Documentation',
443 'baz': 'evil'})
444
Georg Brandl392c6fc2008-05-25 07:25:25 +0000445Defaults are available in all three types of ConfigParsers. They are used in
Georg Brandl430e3622007-11-29 17:02:34 +0000446interpolation if an option used is not defined elsewhere. ::
447
Georg Brandl392c6fc2008-05-25 07:25:25 +0000448 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000449
450 # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each
Georg Brandl392c6fc2008-05-25 07:25:25 +0000451 config = ConfigParser.SafeConfigParser({'bar': 'Life', 'baz': 'hard'})
Georg Brandl430e3622007-11-29 17:02:34 +0000452 config.read('example.cfg')
Georg Brandl392c6fc2008-05-25 07:25:25 +0000453
Georg Brandl430e3622007-11-29 17:02:34 +0000454 print config.get('Section1', 'foo') # -> "Python is fun!"
455 config.remove_option('Section1', 'bar')
456 config.remove_option('Section1', 'baz')
457 print config.get('Section1', 'foo') # -> "Life is hard!"
458
459The function ``opt_move`` below can be used to move options between sections::
460
461 def opt_move(config, section1, section2, option):
462 try:
463 config.set(section2, option, config.get(section1, option, 1))
Georg Brandl392c6fc2008-05-25 07:25:25 +0000464 except ConfigParser.NoSectionError:
Georg Brandl430e3622007-11-29 17:02:34 +0000465 # Create non-existent section
466 config.add_section(section2)
467 opt_move(config, section1, section2, option)
Georg Brandl960b1862008-01-21 16:28:13 +0000468 else:
469 config.remove_option(section1, option)