blob: 1af14cccc091515e05a0f78f0cbfbfe74b90b8ea [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
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
Raymond Hettingere89b8e92009-03-03 05:00:37 +000078 .. versionchanged:: 2.7
79 The default *dict_type* is :class:`collections.OrderedDict`.
80
Georg Brandl8ec7f652007-08-15 14:28:01 +000081
Raymond Hettinger3bac8b22009-03-01 02:04:32 +000082.. class:: ConfigParser([defaults[, dict_type]])
Georg Brandl8ec7f652007-08-15 14:28:01 +000083
84 Derived class of :class:`RawConfigParser` that implements the magical
85 interpolation feature and adds optional arguments to the :meth:`get` and
86 :meth:`items` methods. The values in *defaults* must be appropriate for the
87 ``%()s`` string interpolation. Note that *__name__* is an intrinsic default;
88 its value is the section name, and will override any value provided in
89 *defaults*.
90
91 All option names used in interpolation will be passed through the
92 :meth:`optionxform` method just like any other option name reference. For
93 example, using the default implementation of :meth:`optionxform` (which converts
94 option names to lower case), the values ``foo %(bar)s`` and ``foo %(BAR)s`` are
95 equivalent.
96
Raymond Hettingere89b8e92009-03-03 05:00:37 +000097 .. versionadded:: 2.3
98
99 .. versionchanged:: 2.6
100 *dict_type* was added.
101
102 .. versionchanged:: 2.7
103 The default *dict_type* is :class:`collections.OrderedDict`.
104
Georg Brandl8ec7f652007-08-15 14:28:01 +0000105
Raymond Hettinger3bac8b22009-03-01 02:04:32 +0000106.. class:: SafeConfigParser([defaults[, dict_type]])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000107
108 Derived class of :class:`ConfigParser` that implements a more-sane variant of
109 the magical interpolation feature. This implementation is more predictable as
110 well. New applications should prefer this version if they don't need to be
111 compatible with older versions of Python.
112
Georg Brandlb19be572007-12-29 10:57:00 +0000113 .. XXX Need to explain what's safer/more predictable about it.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000114
115 .. versionadded:: 2.3
116
Raymond Hettingere89b8e92009-03-03 05:00:37 +0000117 .. versionchanged:: 2.6
118 *dict_type* was added.
119
120 .. versionchanged:: 2.7
121 The default *dict_type* is :class:`collections.OrderedDict`.
122
Georg Brandl8ec7f652007-08-15 14:28:01 +0000123
124.. exception:: NoSectionError
125
126 Exception raised when a specified section is not found.
127
128
129.. exception:: DuplicateSectionError
130
131 Exception raised if :meth:`add_section` is called with the name of a section
132 that is already present.
133
134
135.. exception:: NoOptionError
136
137 Exception raised when a specified option is not found in the specified section.
138
139
140.. exception:: InterpolationError
141
142 Base class for exceptions raised when problems occur performing string
143 interpolation.
144
145
146.. exception:: InterpolationDepthError
147
148 Exception raised when string interpolation cannot be completed because the
149 number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`. Subclass of
150 :exc:`InterpolationError`.
151
152
153.. exception:: InterpolationMissingOptionError
154
155 Exception raised when an option referenced from a value does not exist. Subclass
156 of :exc:`InterpolationError`.
157
158 .. versionadded:: 2.3
159
160
161.. exception:: InterpolationSyntaxError
162
163 Exception raised when the source text into which substitutions are made does not
164 conform to the required syntax. Subclass of :exc:`InterpolationError`.
165
166 .. versionadded:: 2.3
167
168
169.. exception:: MissingSectionHeaderError
170
171 Exception raised when attempting to parse a file which has no section headers.
172
173
174.. exception:: ParsingError
175
176 Exception raised when errors occur attempting to parse a file.
177
178
179.. data:: MAX_INTERPOLATION_DEPTH
180
181 The maximum depth for recursive interpolation for :meth:`get` when the *raw*
182 parameter is false. This is relevant only for the :class:`ConfigParser` class.
183
184
185.. seealso::
186
187 Module :mod:`shlex`
188 Support for a creating Unix shell-like mini-languages which can be used as an
189 alternate format for application configuration files.
190
191
192.. _rawconfigparser-objects:
193
194RawConfigParser Objects
195-----------------------
196
197:class:`RawConfigParser` instances have the following methods:
198
199
200.. method:: RawConfigParser.defaults()
201
202 Return a dictionary containing the instance-wide defaults.
203
204
205.. method:: RawConfigParser.sections()
206
207 Return a list of the sections available; ``DEFAULT`` is not included in the
208 list.
209
210
211.. method:: RawConfigParser.add_section(section)
212
213 Add a section named *section* to the instance. If a section by the given name
Facundo Batistab12f0b52008-02-23 12:46:10 +0000214 already exists, :exc:`DuplicateSectionError` is raised. If the name
215 ``DEFAULT`` (or any of it's case-insensitive variants) is passed,
216 :exc:`ValueError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000217
218.. method:: RawConfigParser.has_section(section)
219
220 Indicates whether the named section is present in the configuration. The
221 ``DEFAULT`` section is not acknowledged.
222
223
224.. method:: RawConfigParser.options(section)
225
226 Returns a list of options available in the specified *section*.
227
228
229.. method:: RawConfigParser.has_option(section, option)
230
231 If the given section exists, and contains the given option, return
232 :const:`True`; otherwise return :const:`False`.
233
234 .. versionadded:: 1.6
235
236
237.. method:: RawConfigParser.read(filenames)
238
239 Attempt to read and parse a list of filenames, returning a list of filenames
240 which were successfully parsed. If *filenames* is a string or Unicode string,
241 it is treated as a single filename. If a file named in *filenames* cannot be
242 opened, that file will be ignored. This is designed so that you can specify a
243 list of potential configuration file locations (for example, the current
244 directory, the user's home directory, and some system-wide directory), and all
245 existing configuration files in the list will be read. If none of the named
246 files exist, the :class:`ConfigParser` instance will contain an empty dataset.
247 An application which requires initial values to be loaded from a file should
248 load the required file or files using :meth:`readfp` before calling :meth:`read`
249 for any optional files::
250
Benjamin Petersona7b55a32009-02-20 03:31:23 +0000251 import ConfigParser, os
Georg Brandl8ec7f652007-08-15 14:28:01 +0000252
Georg Brandl392c6fc2008-05-25 07:25:25 +0000253 config = ConfigParser.ConfigParser()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000254 config.readfp(open('defaults.cfg'))
255 config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')])
256
257 .. versionchanged:: 2.4
258 Returns list of successfully parsed filenames.
259
260
261.. method:: RawConfigParser.readfp(fp[, filename])
262
263 Read and parse configuration data from the file or file-like object in *fp*
264 (only the :meth:`readline` method is used). If *filename* is omitted and *fp*
265 has a :attr:`name` attribute, that is used for *filename*; the default is
266 ``<???>``.
267
268
269.. method:: RawConfigParser.get(section, option)
270
271 Get an *option* value for the named *section*.
272
273
274.. method:: RawConfigParser.getint(section, option)
275
276 A convenience method which coerces the *option* in the specified *section* to an
277 integer.
278
279
280.. method:: RawConfigParser.getfloat(section, option)
281
282 A convenience method which coerces the *option* in the specified *section* to a
283 floating point number.
284
285
286.. method:: RawConfigParser.getboolean(section, option)
287
288 A convenience method which coerces the *option* in the specified *section* to a
289 Boolean value. Note that the accepted values for the option are ``"1"``,
290 ``"yes"``, ``"true"``, and ``"on"``, which cause this method to return ``True``,
291 and ``"0"``, ``"no"``, ``"false"``, and ``"off"``, which cause it to return
292 ``False``. These string values are checked in a case-insensitive manner. Any
293 other value will cause it to raise :exc:`ValueError`.
294
295
296.. method:: RawConfigParser.items(section)
297
298 Return a list of ``(name, value)`` pairs for each option in the given *section*.
299
300
301.. method:: RawConfigParser.set(section, option, value)
302
303 If the given section exists, set the given option to the specified value;
304 otherwise raise :exc:`NoSectionError`. While it is possible to use
305 :class:`RawConfigParser` (or :class:`ConfigParser` with *raw* parameters set to
306 true) for *internal* storage of non-string values, full functionality (including
307 interpolation and output to files) can only be achieved using string values.
308
309 .. versionadded:: 1.6
310
311
312.. method:: RawConfigParser.write(fileobject)
313
314 Write a representation of the configuration to the specified file object. This
315 representation can be parsed by a future :meth:`read` call.
316
317 .. versionadded:: 1.6
318
319
320.. method:: RawConfigParser.remove_option(section, option)
321
322 Remove the specified *option* from the specified *section*. If the section does
323 not exist, raise :exc:`NoSectionError`. If the option existed to be removed,
324 return :const:`True`; otherwise return :const:`False`.
325
326 .. versionadded:: 1.6
327
328
329.. method:: RawConfigParser.remove_section(section)
330
331 Remove the specified *section* from the configuration. If the section in fact
332 existed, return ``True``. Otherwise return ``False``.
333
334
335.. method:: RawConfigParser.optionxform(option)
336
Georg Brandldc020522009-10-23 08:14:44 +0000337 Transforms the option name *option* as found in an input file or as passed in
338 by client code to the form that should be used in the internal structures.
339 The default implementation returns a lower-case version of *option*;
340 subclasses may override this or client code can set an attribute of this name
341 on instances to affect this behavior.
342
343 You don't necessarily need to subclass a ConfigParser to use this method, you
344 can also re-set it on an instance, to a function that takes a string
345 argument. Setting it to ``str``, for example, would make option names case
346 sensitive::
347
348 cfgparser = ConfigParser()
349 ...
350 cfgparser.optionxform = str
Georg Brandl8ec7f652007-08-15 14:28:01 +0000351
352
353.. _configparser-objects:
354
355ConfigParser Objects
356--------------------
357
358The :class:`ConfigParser` class extends some methods of the
359:class:`RawConfigParser` interface, adding some optional arguments.
360
361
362.. method:: ConfigParser.get(section, option[, raw[, vars]])
363
364 Get an *option* value for the named *section*. All the ``'%'`` interpolations
365 are expanded in the return values, based on the defaults passed into the
366 constructor, as well as the options *vars* provided, unless the *raw* argument
367 is true.
368
369
370.. method:: ConfigParser.items(section[, raw[, vars]])
371
372 Return a list of ``(name, value)`` pairs for each option in the given *section*.
373 Optional arguments have the same meaning as for the :meth:`get` method.
374
375 .. versionadded:: 2.3
376
377
378.. _safeconfigparser-objects:
379
380SafeConfigParser Objects
381------------------------
382
383The :class:`SafeConfigParser` class implements the same extended interface as
384:class:`ConfigParser`, with the following addition:
385
386
387.. method:: SafeConfigParser.set(section, option, value)
388
389 If the given section exists, set the given option to the specified value;
390 otherwise raise :exc:`NoSectionError`. *value* must be a string (:class:`str`
391 or :class:`unicode`); if not, :exc:`TypeError` is raised.
392
393 .. versionadded:: 2.4
394
Georg Brandl430e3622007-11-29 17:02:34 +0000395
396Examples
397--------
398
399An example of writing to a configuration file::
400
Georg Brandl392c6fc2008-05-25 07:25:25 +0000401 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000402
Georg Brandl392c6fc2008-05-25 07:25:25 +0000403 config = ConfigParser.RawConfigParser()
404
Georg Brandl430e3622007-11-29 17:02:34 +0000405 # When adding sections or items, add them in the reverse order of
406 # how you want them to be displayed in the actual file.
407 # In addition, please note that using RawConfigParser's and the raw
408 # mode of ConfigParser's respective set functions, you can assign
409 # non-string values to keys internally, but will receive an error
410 # when attempting to write to a file or when you get it in non-raw
411 # mode. SafeConfigParser does not allow such assignments to take place.
412 config.add_section('Section1')
413 config.set('Section1', 'int', '15')
414 config.set('Section1', 'bool', 'true')
415 config.set('Section1', 'float', '3.1415')
416 config.set('Section1', 'baz', 'fun')
417 config.set('Section1', 'bar', 'Python')
418 config.set('Section1', 'foo', '%(bar)s is %(baz)s!')
Georg Brandl392c6fc2008-05-25 07:25:25 +0000419
Georg Brandl430e3622007-11-29 17:02:34 +0000420 # Writing our configuration file to 'example.cfg'
421 with open('example.cfg', 'wb') as configfile:
422 config.write(configfile)
423
424An example of reading the configuration file again::
425
Georg Brandl392c6fc2008-05-25 07:25:25 +0000426 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000427
Georg Brandl392c6fc2008-05-25 07:25:25 +0000428 config = ConfigParser.RawConfigParser()
Georg Brandl430e3622007-11-29 17:02:34 +0000429 config.read('example.cfg')
430
431 # getfloat() raises an exception if the value is not a float
432 # getint() and getboolean() also do this for their respective types
433 float = config.getfloat('Section1', 'float')
434 int = config.getint('Section1', 'int')
435 print float + int
436
437 # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.
438 # This is because we are using a RawConfigParser().
439 if config.getboolean('Section1', 'bool'):
440 print config.get('Section1', 'foo')
441
442To get interpolation, you will need to use a :class:`ConfigParser` or
443:class:`SafeConfigParser`::
444
Georg Brandl392c6fc2008-05-25 07:25:25 +0000445 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000446
Georg Brandl392c6fc2008-05-25 07:25:25 +0000447 config = ConfigParser.ConfigParser()
Georg Brandl430e3622007-11-29 17:02:34 +0000448 config.read('example.cfg')
449
450 # Set the third, optional argument of get to 1 if you wish to use raw mode.
451 print config.get('Section1', 'foo', 0) # -> "Python is fun!"
452 print config.get('Section1', 'foo', 1) # -> "%(bar)s is %(baz)s!"
453
454 # The optional fourth argument is a dict with members that will take
455 # precedence in interpolation.
456 print config.get('Section1', 'foo', 0, {'bar': 'Documentation',
457 'baz': 'evil'})
458
Georg Brandl392c6fc2008-05-25 07:25:25 +0000459Defaults are available in all three types of ConfigParsers. They are used in
Georg Brandl430e3622007-11-29 17:02:34 +0000460interpolation if an option used is not defined elsewhere. ::
461
Georg Brandl392c6fc2008-05-25 07:25:25 +0000462 import ConfigParser
Georg Brandl430e3622007-11-29 17:02:34 +0000463
464 # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each
Georg Brandl392c6fc2008-05-25 07:25:25 +0000465 config = ConfigParser.SafeConfigParser({'bar': 'Life', 'baz': 'hard'})
Georg Brandl430e3622007-11-29 17:02:34 +0000466 config.read('example.cfg')
Georg Brandl392c6fc2008-05-25 07:25:25 +0000467
Georg Brandl430e3622007-11-29 17:02:34 +0000468 print config.get('Section1', 'foo') # -> "Python is fun!"
469 config.remove_option('Section1', 'bar')
470 config.remove_option('Section1', 'baz')
471 print config.get('Section1', 'foo') # -> "Life is hard!"
472
473The function ``opt_move`` below can be used to move options between sections::
474
475 def opt_move(config, section1, section2, option):
476 try:
477 config.set(section2, option, config.get(section1, option, 1))
Georg Brandl392c6fc2008-05-25 07:25:25 +0000478 except ConfigParser.NoSectionError:
Georg Brandl430e3622007-11-29 17:02:34 +0000479 # Create non-existent section
480 config.add_section(section2)
481 opt_move(config, section1, section2, option)
Georg Brandl960b1862008-01-21 16:28:13 +0000482 else:
483 config.remove_option(section1, option)