1:mod:`ConfigParser` --- Configuration file parser 2================================================= 3 4.. module:: ConfigParser 5 :synopsis: Configuration file parser. 6 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> 11 12.. note:: 13 14 The :mod:`ConfigParser` module has been renamed to :mod:`configparser` in 15 Python 3. The :term:`2to3` tool will automatically adapt imports when 16 converting your sources to Python 3. 17 18.. 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.ConfigParser`. The :class:`~ConfigParser.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 30.. note:: 31 32 This library does *not* interpret or write the value-type prefixes used in 33 the Windows Registry extended version of INI syntax. 34 35.. seealso:: 36 37 Module :mod:`shlex` 38 Support for a creating Unix shell-like mini-languages which can be used 39 as an alternate format for application configuration files. 40 41 Module :mod:`json` 42 The json module implements a subset of JavaScript syntax which can also 43 be used for this purpose. 44 45The configuration file consists of sections, led by a ``[section]`` header and 46followed by ``name: value`` entries, with continuations in the style of 47:rfc:`822` (see section 3.1.1, "LONG HEADER FIELDS"); ``name=value`` is also 48accepted. Note that leading whitespace is removed from values. The optional 49values can contain format strings which refer to other values in the same 50section, or values in a special ``DEFAULT`` section. Additional defaults can be 51provided on initialization and retrieval. Lines beginning with ``'#'`` or 52``';'`` are ignored and may be used to provide comments. 53 54Configuration files may include comments, prefixed by specific characters (``#`` 55and ``;``). Comments may appear on their own in an otherwise empty line, or may 56be entered in lines holding values or section names. In the latter case, they 57need to be preceded by a whitespace character to be recognized as a comment. 58(For backwards compatibility, only ``;`` starts an inline comment, while ``#`` 59does not.) 60 61On top of the core functionality, :class:`SafeConfigParser` supports 62interpolation. This means values can contain format strings which refer to 63other values in the same section, or values in a special ``DEFAULT`` section. 64Additional defaults can be provided on initialization. 65 66For example:: 67 68 [My Section] 69 foodir: %(dir)s/whatever 70 dir=frob 71 long: this value continues 72 in the next line 73 74would resolve the ``%(dir)s`` to the value of ``dir`` (``frob`` in this case). 75All reference expansions are done on demand. 76 77Default values can be specified by passing them into the :class:`~ConfigParser.ConfigParser` 78constructor as a dictionary. Additional defaults may be passed into the 79:meth:`get` method which will override all others. 80 81Sections are normally stored in a built-in dictionary. An alternative dictionary 82type can be passed to the :class:`~ConfigParser.ConfigParser` constructor. For example, if a 83dictionary type is passed that sorts its keys, the sections will be sorted on 84write-back, as will be the keys within each section. 85 86 87.. class:: RawConfigParser([defaults[, dict_type[, allow_no_value]]]) 88 89 The basic configuration object. When *defaults* is given, it is initialized 90 into the dictionary of intrinsic defaults. When *dict_type* is given, it will 91 be used to create the dictionary objects for the list of sections, for the 92 options within a section, and for the default values. When *allow_no_value* 93 is true (default: ``False``), options without values are accepted; the value 94 presented for these is ``None``. 95 96 This class does not 97 support the magical interpolation behavior. 98 99 All option names are passed through the :meth:`optionxform` method. Its 100 default implementation converts option names to lower case. 101 102 .. 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`. 109 *allow_no_value* was added. 110 111 112.. class:: ConfigParser([defaults[, dict_type[, allow_no_value]]]) 113 114 Derived class of :class:`RawConfigParser` that implements the magical 115 interpolation feature and adds optional arguments to the :meth:`get` and 116 :meth:`items` methods. The values in *defaults* must be appropriate for the 117 ``%()s`` string interpolation. Note that *__name__* is an intrinsic default; 118 its value is the section name, and will override any value provided in 119 *defaults*. 120 121 All option names used in interpolation will be passed through the 122 :meth:`optionxform` method just like any other option name reference. Using 123 the default implementation of :meth:`optionxform`, the values ``foo %(bar)s`` 124 and ``foo %(BAR)s`` are equivalent. 125 126 .. versionadded:: 2.3 127 128 .. versionchanged:: 2.6 129 *dict_type* was added. 130 131 .. versionchanged:: 2.7 132 The default *dict_type* is :class:`collections.OrderedDict`. 133 *allow_no_value* was added. 134 135 136.. class:: SafeConfigParser([defaults[, dict_type[, allow_no_value]]]) 137 138 Derived class of :class:`~ConfigParser.ConfigParser` that implements a more-sane variant of 139 the magical interpolation feature. This implementation is more predictable as 140 well. New applications should prefer this version if they don't need to be 141 compatible with older versions of Python. 142 143 .. XXX Need to explain what's safer/more predictable about it. 144 145 .. versionadded:: 2.3 146 147 .. versionchanged:: 2.6 148 *dict_type* was added. 149 150 .. versionchanged:: 2.7 151 The default *dict_type* is :class:`collections.OrderedDict`. 152 *allow_no_value* was added. 153 154 155.. exception:: Error 156 157 Base class for all other configparser exceptions. 158 159 160.. exception:: NoSectionError 161 162 Exception raised when a specified section is not found. 163 164 165.. exception:: DuplicateSectionError 166 167 Exception raised if :meth:`add_section` is called with the name of a section 168 that is already present. 169 170 171.. exception:: NoOptionError 172 173 Exception raised when a specified option is not found in the specified section. 174 175 176.. exception:: InterpolationError 177 178 Base class for exceptions raised when problems occur performing string 179 interpolation. 180 181 182.. exception:: InterpolationDepthError 183 184 Exception raised when string interpolation cannot be completed because the 185 number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`. Subclass of 186 :exc:`InterpolationError`. 187 188 189.. exception:: InterpolationMissingOptionError 190 191 Exception raised when an option referenced from a value does not exist. Subclass 192 of :exc:`InterpolationError`. 193 194 .. versionadded:: 2.3 195 196 197.. exception:: InterpolationSyntaxError 198 199 Exception raised when the source text into which substitutions are made does not 200 conform to the required syntax. Subclass of :exc:`InterpolationError`. 201 202 .. versionadded:: 2.3 203 204 205.. exception:: MissingSectionHeaderError 206 207 Exception raised when attempting to parse a file which has no section headers. 208 209 210.. exception:: ParsingError 211 212 Exception raised when errors occur attempting to parse a file. 213 214 215.. data:: MAX_INTERPOLATION_DEPTH 216 217 The maximum depth for recursive interpolation for :meth:`get` when the *raw* 218 parameter is false. This is relevant only for the :class:`~ConfigParser.ConfigParser` class. 219 220 221.. seealso:: 222 223 Module :mod:`shlex` 224 Support for a creating Unix shell-like mini-languages which can be used as an 225 alternate format for application configuration files. 226 227 228.. _rawconfigparser-objects: 229 230RawConfigParser Objects 231----------------------- 232 233:class:`RawConfigParser` instances have the following methods: 234 235 236.. method:: RawConfigParser.defaults() 237 238 Return a dictionary containing the instance-wide defaults. 239 240 241.. method:: RawConfigParser.sections() 242 243 Return a list of the sections available; ``DEFAULT`` is not included in the 244 list. 245 246 247.. method:: RawConfigParser.add_section(section) 248 249 Add a section named *section* to the instance. If a section by the given name 250 already exists, :exc:`DuplicateSectionError` is raised. If the name 251 ``DEFAULT`` (or any of it's case-insensitive variants) is passed, 252 :exc:`ValueError` is raised. 253 254.. method:: RawConfigParser.has_section(section) 255 256 Indicates whether the named section is present in the configuration. The 257 ``DEFAULT`` section is not acknowledged. 258 259 260.. method:: RawConfigParser.options(section) 261 262 Returns a list of options available in the specified *section*. 263 264 265.. method:: RawConfigParser.has_option(section, option) 266 267 If the given section exists, and contains the given option, return 268 :const:`True`; otherwise return :const:`False`. 269 270 .. versionadded:: 1.6 271 272 273.. method:: RawConfigParser.read(filenames) 274 275 Attempt to read and parse a list of filenames, returning a list of filenames 276 which were successfully parsed. If *filenames* is a string or Unicode string, 277 it is treated as a single filename. If a file named in *filenames* cannot be 278 opened, that file will be ignored. This is designed so that you can specify a 279 list of potential configuration file locations (for example, the current 280 directory, the user's home directory, and some system-wide directory), and all 281 existing configuration files in the list will be read. If none of the named 282 files exist, the :class:`~ConfigParser.ConfigParser` instance will contain an empty dataset. 283 An application which requires initial values to be loaded from a file should 284 load the required file or files using :meth:`readfp` before calling :meth:`read` 285 for any optional files:: 286 287 import ConfigParser, os 288 289 config = ConfigParser.ConfigParser() 290 config.readfp(open('defaults.cfg')) 291 config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')]) 292 293 .. versionchanged:: 2.4 294 Returns list of successfully parsed filenames. 295 296 297.. method:: RawConfigParser.readfp(fp[, filename]) 298 299 Read and parse configuration data from the file or file-like object in *fp* 300 (only the :meth:`readline` method is used). If *filename* is omitted and *fp* 301 has a :attr:`name` attribute, that is used for *filename*; the default is 302 ``<???>``. 303 304 305.. method:: RawConfigParser.get(section, option) 306 307 Get an *option* value for the named *section*. 308 309 310.. method:: RawConfigParser.getint(section, option) 311 312 A convenience method which coerces the *option* in the specified *section* to an 313 integer. 314 315 316.. method:: RawConfigParser.getfloat(section, option) 317 318 A convenience method which coerces the *option* in the specified *section* to a 319 floating point number. 320 321 322.. method:: RawConfigParser.getboolean(section, option) 323 324 A convenience method which coerces the *option* in the specified *section* to a 325 Boolean value. Note that the accepted values for the option are ``"1"``, 326 ``"yes"``, ``"true"``, and ``"on"``, which cause this method to return ``True``, 327 and ``"0"``, ``"no"``, ``"false"``, and ``"off"``, which cause it to return 328 ``False``. These string values are checked in a case-insensitive manner. Any 329 other value will cause it to raise :exc:`ValueError`. 330 331 332.. method:: RawConfigParser.items(section) 333 334 Return a list of ``(name, value)`` pairs for each option in the given *section*. 335 336 337.. method:: RawConfigParser.set(section, option, value) 338 339 If the given section exists, set the given option to the specified value; 340 otherwise raise :exc:`NoSectionError`. While it is possible to use 341 :class:`RawConfigParser` (or :class:`~ConfigParser.ConfigParser` with *raw* parameters set to 342 true) for *internal* storage of non-string values, full functionality (including 343 interpolation and output to files) can only be achieved using string values. 344 345 .. versionadded:: 1.6 346 347 348.. method:: RawConfigParser.write(fileobject) 349 350 Write a representation of the configuration to the specified file object. This 351 representation can be parsed by a future :meth:`read` call. 352 353 .. versionadded:: 1.6 354 355 356.. method:: RawConfigParser.remove_option(section, option) 357 358 Remove the specified *option* from the specified *section*. If the section does 359 not exist, raise :exc:`NoSectionError`. If the option existed to be removed, 360 return :const:`True`; otherwise return :const:`False`. 361 362 .. versionadded:: 1.6 363 364 365.. method:: RawConfigParser.remove_section(section) 366 367 Remove the specified *section* from the configuration. If the section in fact 368 existed, return ``True``. Otherwise return ``False``. 369 370 371.. method:: RawConfigParser.optionxform(option) 372 373 Transforms the option name *option* as found in an input file or as passed in 374 by client code to the form that should be used in the internal structures. 375 The default implementation returns a lower-case version of *option*; 376 subclasses may override this or client code can set an attribute of this name 377 on instances to affect this behavior. 378 379 You don't necessarily need to subclass a ConfigParser to use this method, you 380 can also re-set it on an instance, to a function that takes a string 381 argument. Setting it to ``str``, for example, would make option names case 382 sensitive:: 383 384 cfgparser = ConfigParser() 385 ... 386 cfgparser.optionxform = str 387 388 Note that when reading configuration files, whitespace around the 389 option names are stripped before :meth:`optionxform` is called. 390 391 392.. _configparser-objects: 393 394ConfigParser Objects 395-------------------- 396 397The :class:`~ConfigParser.ConfigParser` class extends some methods of the 398:class:`RawConfigParser` interface, adding some optional arguments. 399 400 401.. method:: ConfigParser.get(section, option[, raw[, vars]]) 402 403 Get an *option* value for the named *section*. If *vars* is provided, it 404 must be a dictionary. The *option* is looked up in *vars* (if provided), 405 *section*, and in *defaults* in that order. 406 407 All the ``'%'`` interpolations are expanded in the return values, unless the 408 *raw* argument is true. Values for interpolation keys are looked up in the 409 same manner as the option. 410 411.. method:: ConfigParser.items(section[, raw[, vars]]) 412 413 Return a list of ``(name, value)`` pairs for each option in the given *section*. 414 Optional arguments have the same meaning as for the :meth:`get` method. 415 416 .. versionadded:: 2.3 417 418 419.. _safeconfigparser-objects: 420 421SafeConfigParser Objects 422------------------------ 423 424The :class:`SafeConfigParser` class implements the same extended interface as 425:class:`~ConfigParser.ConfigParser`, with the following addition: 426 427 428.. method:: SafeConfigParser.set(section, option, value) 429 430 If the given section exists, set the given option to the specified value; 431 otherwise raise :exc:`NoSectionError`. *value* must be a string (:class:`str` 432 or :class:`unicode`); if not, :exc:`TypeError` is raised. 433 434 .. versionadded:: 2.4 435 436 437Examples 438-------- 439 440An example of writing to a configuration file:: 441 442 import ConfigParser 443 444 config = ConfigParser.RawConfigParser() 445 446 # When adding sections or items, add them in the reverse order of 447 # how you want them to be displayed in the actual file. 448 # In addition, please note that using RawConfigParser's and the raw 449 # mode of ConfigParser's respective set functions, you can assign 450 # non-string values to keys internally, but will receive an error 451 # when attempting to write to a file or when you get it in non-raw 452 # mode. SafeConfigParser does not allow such assignments to take place. 453 config.add_section('Section1') 454 config.set('Section1', 'an_int', '15') 455 config.set('Section1', 'a_bool', 'true') 456 config.set('Section1', 'a_float', '3.1415') 457 config.set('Section1', 'baz', 'fun') 458 config.set('Section1', 'bar', 'Python') 459 config.set('Section1', 'foo', '%(bar)s is %(baz)s!') 460 461 # Writing our configuration file to 'example.cfg' 462 with open('example.cfg', 'wb') as configfile: 463 config.write(configfile) 464 465An example of reading the configuration file again:: 466 467 import ConfigParser 468 469 config = ConfigParser.RawConfigParser() 470 config.read('example.cfg') 471 472 # getfloat() raises an exception if the value is not a float 473 # getint() and getboolean() also do this for their respective types 474 a_float = config.getfloat('Section1', 'a_float') 475 an_int = config.getint('Section1', 'an_int') 476 print a_float + an_int 477 478 # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'. 479 # This is because we are using a RawConfigParser(). 480 if config.getboolean('Section1', 'a_bool'): 481 print config.get('Section1', 'foo') 482 483To get interpolation, you will need to use a :class:`~ConfigParser.ConfigParser` or 484:class:`SafeConfigParser`:: 485 486 import ConfigParser 487 488 config = ConfigParser.ConfigParser() 489 config.read('example.cfg') 490 491 # Set the third, optional argument of get to 1 if you wish to use raw mode. 492 print config.get('Section1', 'foo', 0) # -> "Python is fun!" 493 print config.get('Section1', 'foo', 1) # -> "%(bar)s is %(baz)s!" 494 495 # The optional fourth argument is a dict with members that will take 496 # precedence in interpolation. 497 print config.get('Section1', 'foo', 0, {'bar': 'Documentation', 498 'baz': 'evil'}) 499 500Defaults are available in all three types of ConfigParsers. They are used in 501interpolation if an option used is not defined elsewhere. :: 502 503 import ConfigParser 504 505 # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each 506 config = ConfigParser.SafeConfigParser({'bar': 'Life', 'baz': 'hard'}) 507 config.read('example.cfg') 508 509 print config.get('Section1', 'foo') # -> "Python is fun!" 510 config.remove_option('Section1', 'bar') 511 config.remove_option('Section1', 'baz') 512 print config.get('Section1', 'foo') # -> "Life is hard!" 513 514The function ``opt_move`` below can be used to move options between sections:: 515 516 def opt_move(config, section1, section2, option): 517 try: 518 config.set(section2, option, config.get(section1, option, 1)) 519 except ConfigParser.NoSectionError: 520 # Create non-existent section 521 config.add_section(section2) 522 opt_move(config, section1, section2, option) 523 else: 524 config.remove_option(section1, option) 525 526Some configuration files are known to include settings without values, but which 527otherwise conform to the syntax supported by :mod:`ConfigParser`. The 528*allow_no_value* parameter to the constructor can be used to indicate that such 529values should be accepted: 530 531.. doctest:: 532 533 >>> import ConfigParser 534 >>> import io 535 536 >>> sample_config = """ 537 ... [mysqld] 538 ... user = mysql 539 ... pid-file = /var/run/mysqld/mysqld.pid 540 ... skip-external-locking 541 ... old_passwords = 1 542 ... skip-bdb 543 ... skip-innodb 544 ... """ 545 >>> config = ConfigParser.RawConfigParser(allow_no_value=True) 546 >>> config.readfp(io.BytesIO(sample_config)) 547 548 >>> # Settings with values are treated as before: 549 >>> config.get("mysqld", "user") 550 'mysql' 551 552 >>> # Settings without values provide None: 553 >>> config.get("mysqld", "skip-bdb") 554 555 >>> # Settings which aren't specified still raise an error: 556 >>> config.get("mysqld", "does-not-exist") 557 Traceback (most recent call last): 558 ... 559 ConfigParser.NoOptionError: No option 'does-not-exist' in section: 'mysqld' 560