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.. moduleauthor:: Łukasz Langa <lukasz@langa.pl> 11.. sectionauthor:: Christopher G. Petrilli <petrilli@amber.org> 12.. sectionauthor:: Łukasz Langa <lukasz@langa.pl> 13 14**Source code:** :source:`Lib/configparser.py` 15 16.. index:: 17 pair: .ini; file 18 pair: configuration; file 19 single: ini file 20 single: Windows ini file 21 22-------------- 23 24This module provides the :class:`ConfigParser` class which implements a basic 25configuration language which provides a structure similar to what's found in 26Microsoft Windows INI files. You can use this to write Python programs which 27can be customized by end users easily. 28 29.. note:: 30 31 This library does *not* interpret or write the value-type prefixes used in 32 the Windows Registry extended version of INI syntax. 33 34.. seealso:: 35 36 Module :mod:`shlex` 37 Support for creating Unix shell-like mini-languages which can be used as 38 an alternate format for application configuration files. 39 40 Module :mod:`json` 41 The json module implements a subset of JavaScript syntax which can also 42 be used for this purpose. 43 44 45.. testsetup:: 46 47 import configparser 48 49 50Quick Start 51----------- 52 53Let's take a very basic configuration file that looks like this: 54 55.. code-block:: ini 56 57 [DEFAULT] 58 ServerAliveInterval = 45 59 Compression = yes 60 CompressionLevel = 9 61 ForwardX11 = yes 62 63 [bitbucket.org] 64 User = hg 65 66 [topsecret.server.com] 67 Port = 50022 68 ForwardX11 = no 69 70The structure of INI files is described `in the following section 71<#supported-ini-file-structure>`_. Essentially, the file 72consists of sections, each of which contains keys with values. 73:mod:`configparser` classes can read and write such files. Let's start by 74creating the above configuration file programmatically. 75 76.. doctest:: 77 78 >>> import configparser 79 >>> config = configparser.ConfigParser() 80 >>> config['DEFAULT'] = {'ServerAliveInterval': '45', 81 ... 'Compression': 'yes', 82 ... 'CompressionLevel': '9'} 83 >>> config['bitbucket.org'] = {} 84 >>> config['bitbucket.org']['User'] = 'hg' 85 >>> config['topsecret.server.com'] = {} 86 >>> topsecret = config['topsecret.server.com'] 87 >>> topsecret['Port'] = '50022' # mutates the parser 88 >>> topsecret['ForwardX11'] = 'no' # same here 89 >>> config['DEFAULT']['ForwardX11'] = 'yes' 90 >>> with open('example.ini', 'w') as configfile: 91 ... config.write(configfile) 92 ... 93 94As you can see, we can treat a config parser much like a dictionary. 95There are differences, `outlined later <#mapping-protocol-access>`_, but 96the behavior is very close to what you would expect from a dictionary. 97 98Now that we have created and saved a configuration file, let's read it 99back and explore the data it holds. 100 101.. doctest:: 102 103 >>> config = configparser.ConfigParser() 104 >>> config.sections() 105 [] 106 >>> config.read('example.ini') 107 ['example.ini'] 108 >>> config.sections() 109 ['bitbucket.org', 'topsecret.server.com'] 110 >>> 'bitbucket.org' in config 111 True 112 >>> 'bytebong.com' in config 113 False 114 >>> config['bitbucket.org']['User'] 115 'hg' 116 >>> config['DEFAULT']['Compression'] 117 'yes' 118 >>> topsecret = config['topsecret.server.com'] 119 >>> topsecret['ForwardX11'] 120 'no' 121 >>> topsecret['Port'] 122 '50022' 123 >>> for key in config['bitbucket.org']: # doctest: +SKIP 124 ... print(key) 125 user 126 compressionlevel 127 serveraliveinterval 128 compression 129 forwardx11 130 >>> config['bitbucket.org']['ForwardX11'] 131 'yes' 132 133As we can see above, the API is pretty straightforward. The only bit of magic 134involves the ``DEFAULT`` section which provides default values for all other 135sections [1]_. Note also that keys in sections are 136case-insensitive and stored in lowercase [1]_. 137 138 139Supported Datatypes 140------------------- 141 142Config parsers do not guess datatypes of values in configuration files, always 143storing them internally as strings. This means that if you need other 144datatypes, you should convert on your own: 145 146.. doctest:: 147 148 >>> int(topsecret['Port']) 149 50022 150 >>> float(topsecret['CompressionLevel']) 151 9.0 152 153Since this task is so common, config parsers provide a range of handy getter 154methods to handle integers, floats and booleans. The last one is the most 155interesting because simply passing the value to ``bool()`` would do no good 156since ``bool('False')`` is still ``True``. This is why config parsers also 157provide :meth:`~ConfigParser.getboolean`. This method is case-insensitive and 158recognizes Boolean values from ``'yes'``/``'no'``, ``'on'``/``'off'``, 159``'true'``/``'false'`` and ``'1'``/``'0'`` [1]_. For example: 160 161.. doctest:: 162 163 >>> topsecret.getboolean('ForwardX11') 164 False 165 >>> config['bitbucket.org'].getboolean('ForwardX11') 166 True 167 >>> config.getboolean('bitbucket.org', 'Compression') 168 True 169 170Apart from :meth:`~ConfigParser.getboolean`, config parsers also 171provide equivalent :meth:`~ConfigParser.getint` and 172:meth:`~ConfigParser.getfloat` methods. You can register your own 173converters and customize the provided ones. [1]_ 174 175Fallback Values 176--------------- 177 178As with a dictionary, you can use a section's :meth:`get` method to 179provide fallback values: 180 181.. doctest:: 182 183 >>> topsecret.get('Port') 184 '50022' 185 >>> topsecret.get('CompressionLevel') 186 '9' 187 >>> topsecret.get('Cipher') 188 >>> topsecret.get('Cipher', '3des-cbc') 189 '3des-cbc' 190 191Please note that default values have precedence over fallback values. 192For instance, in our example the ``'CompressionLevel'`` key was 193specified only in the ``'DEFAULT'`` section. If we try to get it from 194the section ``'topsecret.server.com'``, we will always get the default, 195even if we specify a fallback: 196 197.. doctest:: 198 199 >>> topsecret.get('CompressionLevel', '3') 200 '9' 201 202One more thing to be aware of is that the parser-level :meth:`get` method 203provides a custom, more complex interface, maintained for backwards 204compatibility. When using this method, a fallback value can be provided via 205the ``fallback`` keyword-only argument: 206 207.. doctest:: 208 209 >>> config.get('bitbucket.org', 'monster', 210 ... fallback='No such things as monsters') 211 'No such things as monsters' 212 213The same ``fallback`` argument can be used with the 214:meth:`~ConfigParser.getint`, :meth:`~ConfigParser.getfloat` and 215:meth:`~ConfigParser.getboolean` methods, for example: 216 217.. doctest:: 218 219 >>> 'BatchMode' in topsecret 220 False 221 >>> topsecret.getboolean('BatchMode', fallback=True) 222 True 223 >>> config['DEFAULT']['BatchMode'] = 'no' 224 >>> topsecret.getboolean('BatchMode', fallback=True) 225 False 226 227 228Supported INI File Structure 229---------------------------- 230 231A configuration file consists of sections, each led by a ``[section]`` header, 232followed by key/value entries separated by a specific string (``=`` or ``:`` by 233default [1]_). By default, section names are case sensitive but keys are not 234[1]_. Leading and trailing whitespace is removed from keys and values. 235Values can be omitted, in which case the key/value delimiter may also be left 236out. Values can also span multiple lines, as long as they are indented deeper 237than the first line of the value. Depending on the parser's mode, blank lines 238may be treated as parts of multiline values or ignored. 239 240Configuration files may include comments, prefixed by specific 241characters (``#`` and ``;`` by default [1]_). Comments may appear on 242their own on an otherwise empty line, possibly indented. [1]_ 243 244For example: 245 246.. code-block:: ini 247 248 [Simple Values] 249 key=value 250 spaces in keys=allowed 251 spaces in values=allowed as well 252 spaces around the delimiter = obviously 253 you can also use : to delimit keys from values 254 255 [All Values Are Strings] 256 values like this: 1000000 257 or this: 3.14159265359 258 are they treated as numbers? : no 259 integers, floats and booleans are held as: strings 260 can use the API to get converted values directly: true 261 262 [Multiline Values] 263 chorus: I'm a lumberjack, and I'm okay 264 I sleep all night and I work all day 265 266 [No Values] 267 key_without_value 268 empty string value here = 269 270 [You can use comments] 271 # like this 272 ; or this 273 274 # By default only in an empty line. 275 # Inline comments can be harmful because they prevent users 276 # from using the delimiting characters as parts of values. 277 # That being said, this can be customized. 278 279 [Sections Can Be Indented] 280 can_values_be_as_well = True 281 does_that_mean_anything_special = False 282 purpose = formatting for readability 283 multiline_values = are 284 handled just fine as 285 long as they are indented 286 deeper than the first line 287 of a value 288 # Did I mention we can indent comments, too? 289 290 291Interpolation of values 292----------------------- 293 294On top of the core functionality, :class:`ConfigParser` supports 295interpolation. This means values can be preprocessed before returning them 296from ``get()`` calls. 297 298.. index:: single: % (percent); interpolation in configuration files 299 300.. class:: BasicInterpolation() 301 302 The default implementation used by :class:`ConfigParser`. It enables 303 values to contain format strings which refer to other values in the same 304 section, or values in the special default section [1]_. Additional default 305 values can be provided on initialization. 306 307 For example: 308 309 .. code-block:: ini 310 311 [Paths] 312 home_dir: /Users 313 my_dir: %(home_dir)s/lumberjack 314 my_pictures: %(my_dir)s/Pictures 315 316 317 In the example above, :class:`ConfigParser` with *interpolation* set to 318 ``BasicInterpolation()`` would resolve ``%(home_dir)s`` to the value of 319 ``home_dir`` (``/Users`` in this case). ``%(my_dir)s`` in effect would 320 resolve to ``/Users/lumberjack``. All interpolations are done on demand so 321 keys used in the chain of references do not have to be specified in any 322 specific order in the configuration file. 323 324 With ``interpolation`` set to ``None``, the parser would simply return 325 ``%(my_dir)s/Pictures`` as the value of ``my_pictures`` and 326 ``%(home_dir)s/lumberjack`` as the value of ``my_dir``. 327 328.. index:: single: $ (dollar); interpolation in configuration files 329 330.. class:: ExtendedInterpolation() 331 332 An alternative handler for interpolation which implements a more advanced 333 syntax, used for instance in ``zc.buildout``. Extended interpolation is 334 using ``${section:option}`` to denote a value from a foreign section. 335 Interpolation can span multiple levels. For convenience, if the 336 ``section:`` part is omitted, interpolation defaults to the current section 337 (and possibly the default values from the special section). 338 339 For example, the configuration specified above with basic interpolation, 340 would look like this with extended interpolation: 341 342 .. code-block:: ini 343 344 [Paths] 345 home_dir: /Users 346 my_dir: ${home_dir}/lumberjack 347 my_pictures: ${my_dir}/Pictures 348 349 Values from other sections can be fetched as well: 350 351 .. code-block:: ini 352 353 [Common] 354 home_dir: /Users 355 library_dir: /Library 356 system_dir: /System 357 macports_dir: /opt/local 358 359 [Frameworks] 360 Python: 3.2 361 path: ${Common:system_dir}/Library/Frameworks/ 362 363 [Arthur] 364 nickname: Two Sheds 365 last_name: Jackson 366 my_dir: ${Common:home_dir}/twosheds 367 my_pictures: ${my_dir}/Pictures 368 python_dir: ${Frameworks:path}/Python/Versions/${Frameworks:Python} 369 370Mapping Protocol Access 371----------------------- 372 373.. versionadded:: 3.2 374 375Mapping protocol access is a generic name for functionality that enables using 376custom objects as if they were dictionaries. In case of :mod:`configparser`, 377the mapping interface implementation is using the 378``parser['section']['option']`` notation. 379 380``parser['section']`` in particular returns a proxy for the section's data in 381the parser. This means that the values are not copied but they are taken from 382the original parser on demand. What's even more important is that when values 383are changed on a section proxy, they are actually mutated in the original 384parser. 385 386:mod:`configparser` objects behave as close to actual dictionaries as possible. 387The mapping interface is complete and adheres to the 388:class:`~collections.abc.MutableMapping` ABC. 389However, there are a few differences that should be taken into account: 390 391* By default, all keys in sections are accessible in a case-insensitive manner 392 [1]_. E.g. ``for option in parser["section"]`` yields only ``optionxform``'ed 393 option key names. This means lowercased keys by default. At the same time, 394 for a section that holds the key ``'a'``, both expressions return ``True``:: 395 396 "a" in parser["section"] 397 "A" in parser["section"] 398 399* All sections include ``DEFAULTSECT`` values as well which means that 400 ``.clear()`` on a section may not leave the section visibly empty. This is 401 because default values cannot be deleted from the section (because technically 402 they are not there). If they are overridden in the section, deleting causes 403 the default value to be visible again. Trying to delete a default value 404 causes a :exc:`KeyError`. 405 406* ``DEFAULTSECT`` cannot be removed from the parser: 407 408 * trying to delete it raises :exc:`ValueError`, 409 410 * ``parser.clear()`` leaves it intact, 411 412 * ``parser.popitem()`` never returns it. 413 414* ``parser.get(section, option, **kwargs)`` - the second argument is **not** 415 a fallback value. Note however that the section-level ``get()`` methods are 416 compatible both with the mapping protocol and the classic configparser API. 417 418* ``parser.items()`` is compatible with the mapping protocol (returns a list of 419 *section_name*, *section_proxy* pairs including the DEFAULTSECT). However, 420 this method can also be invoked with arguments: ``parser.items(section, raw, 421 vars)``. The latter call returns a list of *option*, *value* pairs for 422 a specified ``section``, with all interpolations expanded (unless 423 ``raw=True`` is provided). 424 425The mapping protocol is implemented on top of the existing legacy API so that 426subclasses overriding the original interface still should have mappings working 427as expected. 428 429 430Customizing Parser Behaviour 431---------------------------- 432 433There are nearly as many INI format variants as there are applications using it. 434:mod:`configparser` goes a long way to provide support for the largest sensible 435set of INI styles available. The default functionality is mainly dictated by 436historical background and it's very likely that you will want to customize some 437of the features. 438 439The most common way to change the way a specific config parser works is to use 440the :meth:`__init__` options: 441 442* *defaults*, default value: ``None`` 443 444 This option accepts a dictionary of key-value pairs which will be initially 445 put in the ``DEFAULT`` section. This makes for an elegant way to support 446 concise configuration files that don't specify values which are the same as 447 the documented default. 448 449 Hint: if you want to specify default values for a specific section, use 450 :meth:`read_dict` before you read the actual file. 451 452* *dict_type*, default value: :class:`collections.OrderedDict` 453 454 This option has a major impact on how the mapping protocol will behave and how 455 the written configuration files look. With the default ordered 456 dictionary, every section is stored in the order they were added to the 457 parser. Same goes for options within sections. 458 459 An alternative dictionary type can be used for example to sort sections and 460 options on write-back. You can also use a regular dictionary for performance 461 reasons. 462 463 Please note: there are ways to add a set of key-value pairs in a single 464 operation. When you use a regular dictionary in those operations, the order 465 of the keys will be ordered because dict preserves order from Python 3.7. 466 For example: 467 468 .. doctest:: 469 470 >>> parser = configparser.ConfigParser() 471 >>> parser.read_dict({'section1': {'key1': 'value1', 472 ... 'key2': 'value2', 473 ... 'key3': 'value3'}, 474 ... 'section2': {'keyA': 'valueA', 475 ... 'keyB': 'valueB', 476 ... 'keyC': 'valueC'}, 477 ... 'section3': {'foo': 'x', 478 ... 'bar': 'y', 479 ... 'baz': 'z'} 480 ... }) 481 >>> parser.sections() 482 ['section1', 'section2', 'section3'] 483 >>> [option for option in parser['section3']] 484 ['foo', 'bar', 'baz'] 485 486* *allow_no_value*, default value: ``False`` 487 488 Some configuration files are known to include settings without values, but 489 which otherwise conform to the syntax supported by :mod:`configparser`. The 490 *allow_no_value* parameter to the constructor can be used to 491 indicate that such values should be accepted: 492 493 .. doctest:: 494 495 >>> import configparser 496 497 >>> sample_config = """ 498 ... [mysqld] 499 ... user = mysql 500 ... pid-file = /var/run/mysqld/mysqld.pid 501 ... skip-external-locking 502 ... old_passwords = 1 503 ... skip-bdb 504 ... # we don't need ACID today 505 ... skip-innodb 506 ... """ 507 >>> config = configparser.ConfigParser(allow_no_value=True) 508 >>> config.read_string(sample_config) 509 510 >>> # Settings with values are treated as before: 511 >>> config["mysqld"]["user"] 512 'mysql' 513 514 >>> # Settings without values provide None: 515 >>> config["mysqld"]["skip-bdb"] 516 517 >>> # Settings which aren't specified still raise an error: 518 >>> config["mysqld"]["does-not-exist"] 519 Traceback (most recent call last): 520 ... 521 KeyError: 'does-not-exist' 522 523* *delimiters*, default value: ``('=', ':')`` 524 525 Delimiters are substrings that delimit keys from values within a section. 526 The first occurrence of a delimiting substring on a line is considered 527 a delimiter. This means values (but not keys) can contain the delimiters. 528 529 See also the *space_around_delimiters* argument to 530 :meth:`ConfigParser.write`. 531 532* *comment_prefixes*, default value: ``('#', ';')`` 533 534* *inline_comment_prefixes*, default value: ``None`` 535 536 Comment prefixes are strings that indicate the start of a valid comment within 537 a config file. *comment_prefixes* are used only on otherwise empty lines 538 (optionally indented) whereas *inline_comment_prefixes* can be used after 539 every valid value (e.g. section names, options and empty lines as well). By 540 default inline comments are disabled and ``'#'`` and ``';'`` are used as 541 prefixes for whole line comments. 542 543 .. versionchanged:: 3.2 544 In previous versions of :mod:`configparser` behaviour matched 545 ``comment_prefixes=('#',';')`` and ``inline_comment_prefixes=(';',)``. 546 547 Please note that config parsers don't support escaping of comment prefixes so 548 using *inline_comment_prefixes* may prevent users from specifying option 549 values with characters used as comment prefixes. When in doubt, avoid 550 setting *inline_comment_prefixes*. In any circumstances, the only way of 551 storing comment prefix characters at the beginning of a line in multiline 552 values is to interpolate the prefix, for example:: 553 554 >>> from configparser import ConfigParser, ExtendedInterpolation 555 >>> parser = ConfigParser(interpolation=ExtendedInterpolation()) 556 >>> # the default BasicInterpolation could be used as well 557 >>> parser.read_string(""" 558 ... [DEFAULT] 559 ... hash = # 560 ... 561 ... [hashes] 562 ... shebang = 563 ... ${hash}!/usr/bin/env python 564 ... ${hash} -*- coding: utf-8 -*- 565 ... 566 ... extensions = 567 ... enabled_extension 568 ... another_extension 569 ... #disabled_by_comment 570 ... yet_another_extension 571 ... 572 ... interpolation not necessary = if # is not at line start 573 ... even in multiline values = line #1 574 ... line #2 575 ... line #3 576 ... """) 577 >>> print(parser['hashes']['shebang']) 578 <BLANKLINE> 579 #!/usr/bin/env python 580 # -*- coding: utf-8 -*- 581 >>> print(parser['hashes']['extensions']) 582 <BLANKLINE> 583 enabled_extension 584 another_extension 585 yet_another_extension 586 >>> print(parser['hashes']['interpolation not necessary']) 587 if # is not at line start 588 >>> print(parser['hashes']['even in multiline values']) 589 line #1 590 line #2 591 line #3 592 593* *strict*, default value: ``True`` 594 595 When set to ``True``, the parser will not allow for any section or option 596 duplicates while reading from a single source (using :meth:`read_file`, 597 :meth:`read_string` or :meth:`read_dict`). It is recommended to use strict 598 parsers in new applications. 599 600 .. versionchanged:: 3.2 601 In previous versions of :mod:`configparser` behaviour matched 602 ``strict=False``. 603 604* *empty_lines_in_values*, default value: ``True`` 605 606 In config parsers, values can span multiple lines as long as they are 607 indented more than the key that holds them. By default parsers also let 608 empty lines to be parts of values. At the same time, keys can be arbitrarily 609 indented themselves to improve readability. In consequence, when 610 configuration files get big and complex, it is easy for the user to lose 611 track of the file structure. Take for instance: 612 613 .. code-block:: ini 614 615 [Section] 616 key = multiline 617 value with a gotcha 618 619 this = is still a part of the multiline value of 'key' 620 621 This can be especially problematic for the user to see if she's using a 622 proportional font to edit the file. That is why when your application does 623 not need values with empty lines, you should consider disallowing them. This 624 will make empty lines split keys every time. In the example above, it would 625 produce two keys, ``key`` and ``this``. 626 627* *default_section*, default value: ``configparser.DEFAULTSECT`` (that is: 628 ``"DEFAULT"``) 629 630 The convention of allowing a special section of default values for other 631 sections or interpolation purposes is a powerful concept of this library, 632 letting users create complex declarative configurations. This section is 633 normally called ``"DEFAULT"`` but this can be customized to point to any 634 other valid section name. Some typical values include: ``"general"`` or 635 ``"common"``. The name provided is used for recognizing default sections 636 when reading from any source and is used when writing configuration back to 637 a file. Its current value can be retrieved using the 638 ``parser_instance.default_section`` attribute and may be modified at runtime 639 (i.e. to convert files from one format to another). 640 641* *interpolation*, default value: ``configparser.BasicInterpolation`` 642 643 Interpolation behaviour may be customized by providing a custom handler 644 through the *interpolation* argument. ``None`` can be used to turn off 645 interpolation completely, ``ExtendedInterpolation()`` provides a more 646 advanced variant inspired by ``zc.buildout``. More on the subject in the 647 `dedicated documentation section <#interpolation-of-values>`_. 648 :class:`RawConfigParser` has a default value of ``None``. 649 650* *converters*, default value: not set 651 652 Config parsers provide option value getters that perform type conversion. By 653 default :meth:`~ConfigParser.getint`, :meth:`~ConfigParser.getfloat`, and 654 :meth:`~ConfigParser.getboolean` are implemented. Should other getters be 655 desirable, users may define them in a subclass or pass a dictionary where each 656 key is a name of the converter and each value is a callable implementing said 657 conversion. For instance, passing ``{'decimal': decimal.Decimal}`` would add 658 :meth:`getdecimal` on both the parser object and all section proxies. In 659 other words, it will be possible to write both 660 ``parser_instance.getdecimal('section', 'key', fallback=0)`` and 661 ``parser_instance['section'].getdecimal('key', 0)``. 662 663 If the converter needs to access the state of the parser, it can be 664 implemented as a method on a config parser subclass. If the name of this 665 method starts with ``get``, it will be available on all section proxies, in 666 the dict-compatible form (see the ``getdecimal()`` example above). 667 668More advanced customization may be achieved by overriding default values of 669these parser attributes. The defaults are defined on the classes, so they may 670be overridden by subclasses or by attribute assignment. 671 672.. attribute:: ConfigParser.BOOLEAN_STATES 673 674 By default when using :meth:`~ConfigParser.getboolean`, config parsers 675 consider the following values ``True``: ``'1'``, ``'yes'``, ``'true'``, 676 ``'on'`` and the following values ``False``: ``'0'``, ``'no'``, ``'false'``, 677 ``'off'``. You can override this by specifying a custom dictionary of strings 678 and their Boolean outcomes. For example: 679 680 .. doctest:: 681 682 >>> custom = configparser.ConfigParser() 683 >>> custom['section1'] = {'funky': 'nope'} 684 >>> custom['section1'].getboolean('funky') 685 Traceback (most recent call last): 686 ... 687 ValueError: Not a boolean: nope 688 >>> custom.BOOLEAN_STATES = {'sure': True, 'nope': False} 689 >>> custom['section1'].getboolean('funky') 690 False 691 692 Other typical Boolean pairs include ``accept``/``reject`` or 693 ``enabled``/``disabled``. 694 695.. method:: ConfigParser.optionxform(option) 696 697 This method transforms option names on every read, get, or set 698 operation. The default converts the name to lowercase. This also 699 means that when a configuration file gets written, all keys will be 700 lowercase. Override this method if that's unsuitable. 701 For example: 702 703 .. doctest:: 704 705 >>> config = """ 706 ... [Section1] 707 ... Key = Value 708 ... 709 ... [Section2] 710 ... AnotherKey = Value 711 ... """ 712 >>> typical = configparser.ConfigParser() 713 >>> typical.read_string(config) 714 >>> list(typical['Section1'].keys()) 715 ['key'] 716 >>> list(typical['Section2'].keys()) 717 ['anotherkey'] 718 >>> custom = configparser.RawConfigParser() 719 >>> custom.optionxform = lambda option: option 720 >>> custom.read_string(config) 721 >>> list(custom['Section1'].keys()) 722 ['Key'] 723 >>> list(custom['Section2'].keys()) 724 ['AnotherKey'] 725 726.. attribute:: ConfigParser.SECTCRE 727 728 A compiled regular expression used to parse section headers. The default 729 matches ``[section]`` to the name ``"section"``. Whitespace is considered 730 part of the section name, thus ``[ larch ]`` will be read as a section of 731 name ``" larch "``. Override this attribute if that's unsuitable. For 732 example: 733 734 .. doctest:: 735 736 >>> import re 737 >>> config = """ 738 ... [Section 1] 739 ... option = value 740 ... 741 ... [ Section 2 ] 742 ... another = val 743 ... """ 744 >>> typical = configparser.ConfigParser() 745 >>> typical.read_string(config) 746 >>> typical.sections() 747 ['Section 1', ' Section 2 '] 748 >>> custom = configparser.ConfigParser() 749 >>> custom.SECTCRE = re.compile(r"\[ *(?P<header>[^]]+?) *\]") 750 >>> custom.read_string(config) 751 >>> custom.sections() 752 ['Section 1', 'Section 2'] 753 754 .. note:: 755 756 While ConfigParser objects also use an ``OPTCRE`` attribute for recognizing 757 option lines, it's not recommended to override it because that would 758 interfere with constructor options *allow_no_value* and *delimiters*. 759 760 761Legacy API Examples 762------------------- 763 764Mainly because of backwards compatibility concerns, :mod:`configparser` 765provides also a legacy API with explicit ``get``/``set`` methods. While there 766are valid use cases for the methods outlined below, mapping protocol access is 767preferred for new projects. The legacy API is at times more advanced, 768low-level and downright counterintuitive. 769 770An example of writing to a configuration file:: 771 772 import configparser 773 774 config = configparser.RawConfigParser() 775 776 # Please note that using RawConfigParser's set functions, you can assign 777 # non-string values to keys internally, but will receive an error when 778 # attempting to write to a file or when you get it in non-raw mode. Setting 779 # values using the mapping protocol or ConfigParser's set() does not allow 780 # such assignments to take place. 781 config.add_section('Section1') 782 config.set('Section1', 'an_int', '15') 783 config.set('Section1', 'a_bool', 'true') 784 config.set('Section1', 'a_float', '3.1415') 785 config.set('Section1', 'baz', 'fun') 786 config.set('Section1', 'bar', 'Python') 787 config.set('Section1', 'foo', '%(bar)s is %(baz)s!') 788 789 # Writing our configuration file to 'example.cfg' 790 with open('example.cfg', 'w') as configfile: 791 config.write(configfile) 792 793An example of reading the configuration file again:: 794 795 import configparser 796 797 config = configparser.RawConfigParser() 798 config.read('example.cfg') 799 800 # getfloat() raises an exception if the value is not a float 801 # getint() and getboolean() also do this for their respective types 802 a_float = config.getfloat('Section1', 'a_float') 803 an_int = config.getint('Section1', 'an_int') 804 print(a_float + an_int) 805 806 # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'. 807 # This is because we are using a RawConfigParser(). 808 if config.getboolean('Section1', 'a_bool'): 809 print(config.get('Section1', 'foo')) 810 811To get interpolation, use :class:`ConfigParser`:: 812 813 import configparser 814 815 cfg = configparser.ConfigParser() 816 cfg.read('example.cfg') 817 818 # Set the optional *raw* argument of get() to True if you wish to disable 819 # interpolation in a single get operation. 820 print(cfg.get('Section1', 'foo', raw=False)) # -> "Python is fun!" 821 print(cfg.get('Section1', 'foo', raw=True)) # -> "%(bar)s is %(baz)s!" 822 823 # The optional *vars* argument is a dict with members that will take 824 # precedence in interpolation. 825 print(cfg.get('Section1', 'foo', vars={'bar': 'Documentation', 826 'baz': 'evil'})) 827 828 # The optional *fallback* argument can be used to provide a fallback value 829 print(cfg.get('Section1', 'foo')) 830 # -> "Python is fun!" 831 832 print(cfg.get('Section1', 'foo', fallback='Monty is not.')) 833 # -> "Python is fun!" 834 835 print(cfg.get('Section1', 'monster', fallback='No such things as monsters.')) 836 # -> "No such things as monsters." 837 838 # A bare print(cfg.get('Section1', 'monster')) would raise NoOptionError 839 # but we can also use: 840 841 print(cfg.get('Section1', 'monster', fallback=None)) 842 # -> None 843 844Default values are available in both types of ConfigParsers. They are used in 845interpolation if an option used is not defined elsewhere. :: 846 847 import configparser 848 849 # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each 850 config = configparser.ConfigParser({'bar': 'Life', 'baz': 'hard'}) 851 config.read('example.cfg') 852 853 print(config.get('Section1', 'foo')) # -> "Python is fun!" 854 config.remove_option('Section1', 'bar') 855 config.remove_option('Section1', 'baz') 856 print(config.get('Section1', 'foo')) # -> "Life is hard!" 857 858 859.. _configparser-objects: 860 861ConfigParser Objects 862-------------------- 863 864.. class:: ConfigParser(defaults=None, dict_type=collections.OrderedDict, allow_no_value=False, delimiters=('=', ':'), comment_prefixes=('#', ';'), inline_comment_prefixes=None, strict=True, empty_lines_in_values=True, default_section=configparser.DEFAULTSECT, interpolation=BasicInterpolation(), converters={}) 865 866 The main configuration parser. When *defaults* is given, it is initialized 867 into the dictionary of intrinsic defaults. When *dict_type* is given, it 868 will be used to create the dictionary objects for the list of sections, for 869 the options within a section, and for the default values. 870 871 When *delimiters* is given, it is used as the set of substrings that 872 divide keys from values. When *comment_prefixes* is given, it will be used 873 as the set of substrings that prefix comments in otherwise empty lines. 874 Comments can be indented. When *inline_comment_prefixes* is given, it will 875 be used as the set of substrings that prefix comments in non-empty lines. 876 877 When *strict* is ``True`` (the default), the parser won't allow for 878 any section or option duplicates while reading from a single source (file, 879 string or dictionary), raising :exc:`DuplicateSectionError` or 880 :exc:`DuplicateOptionError`. When *empty_lines_in_values* is ``False`` 881 (default: ``True``), each empty line marks the end of an option. Otherwise, 882 internal empty lines of a multiline option are kept as part of the value. 883 When *allow_no_value* is ``True`` (default: ``False``), options without 884 values are accepted; the value held for these is ``None`` and they are 885 serialized without the trailing delimiter. 886 887 When *default_section* is given, it specifies the name for the special 888 section holding default values for other sections and interpolation purposes 889 (normally named ``"DEFAULT"``). This value can be retrieved and changed on 890 runtime using the ``default_section`` instance attribute. 891 892 Interpolation behaviour may be customized by providing a custom handler 893 through the *interpolation* argument. ``None`` can be used to turn off 894 interpolation completely, ``ExtendedInterpolation()`` provides a more 895 advanced variant inspired by ``zc.buildout``. More on the subject in the 896 `dedicated documentation section <#interpolation-of-values>`_. 897 898 All option names used in interpolation will be passed through the 899 :meth:`optionxform` method just like any other option name reference. For 900 example, using the default implementation of :meth:`optionxform` (which 901 converts option names to lower case), the values ``foo %(bar)s`` and ``foo 902 %(BAR)s`` are equivalent. 903 904 When *converters* is given, it should be a dictionary where each key 905 represents the name of a type converter and each value is a callable 906 implementing the conversion from string to the desired datatype. Every 907 converter gets its own corresponding :meth:`get*()` method on the parser 908 object and section proxies. 909 910 .. versionchanged:: 3.1 911 The default *dict_type* is :class:`collections.OrderedDict`. 912 913 .. versionchanged:: 3.2 914 *allow_no_value*, *delimiters*, *comment_prefixes*, *strict*, 915 *empty_lines_in_values*, *default_section* and *interpolation* were 916 added. 917 918 .. versionchanged:: 3.5 919 The *converters* argument was added. 920 921 .. versionchanged:: 3.7 922 The *defaults* argument is read with :meth:`read_dict()`, 923 providing consistent behavior across the parser: non-string 924 keys and values are implicitly converted to strings. 925 926 .. method:: defaults() 927 928 Return a dictionary containing the instance-wide defaults. 929 930 931 .. method:: sections() 932 933 Return a list of the sections available; the *default section* is not 934 included in the list. 935 936 937 .. method:: add_section(section) 938 939 Add a section named *section* to the instance. If a section by the given 940 name already exists, :exc:`DuplicateSectionError` is raised. If the 941 *default section* name is passed, :exc:`ValueError` is raised. The name 942 of the section must be a string; if not, :exc:`TypeError` is raised. 943 944 .. versionchanged:: 3.2 945 Non-string section names raise :exc:`TypeError`. 946 947 948 .. method:: has_section(section) 949 950 Indicates whether the named *section* is present in the configuration. 951 The *default section* is not acknowledged. 952 953 954 .. method:: options(section) 955 956 Return a list of options available in the specified *section*. 957 958 959 .. method:: has_option(section, option) 960 961 If the given *section* exists, and contains the given *option*, return 962 :const:`True`; otherwise return :const:`False`. If the specified 963 *section* is :const:`None` or an empty string, DEFAULT is assumed. 964 965 966 .. method:: read(filenames, encoding=None) 967 968 Attempt to read and parse an iterable of filenames, returning a list of 969 filenames which were successfully parsed. 970 971 If *filenames* is a string, a :class:`bytes` object or a 972 :term:`path-like object`, it is treated as 973 a single filename. If a file named in *filenames* cannot be opened, that 974 file will be ignored. This is designed so that you can specify an 975 iterable of potential configuration file locations (for example, the 976 current directory, the user's home directory, and some system-wide 977 directory), and all existing configuration files in the iterable will be 978 read. 979 980 If none of the named files exist, the :class:`ConfigParser` 981 instance will contain an empty dataset. An application which requires 982 initial values to be loaded from a file should load the required file or 983 files using :meth:`read_file` before calling :meth:`read` for any 984 optional files:: 985 986 import configparser, os 987 988 config = configparser.ConfigParser() 989 config.read_file(open('defaults.cfg')) 990 config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')], 991 encoding='cp1250') 992 993 .. versionadded:: 3.2 994 The *encoding* parameter. Previously, all files were read using the 995 default encoding for :func:`open`. 996 997 .. versionadded:: 3.6.1 998 The *filenames* parameter accepts a :term:`path-like object`. 999 1000 .. versionadded:: 3.7 1001 The *filenames* parameter accepts a :class:`bytes` object. 1002 1003 1004 .. method:: read_file(f, source=None) 1005 1006 Read and parse configuration data from *f* which must be an iterable 1007 yielding Unicode strings (for example files opened in text mode). 1008 1009 Optional argument *source* specifies the name of the file being read. If 1010 not given and *f* has a :attr:`name` attribute, that is used for 1011 *source*; the default is ``'<???>'``. 1012 1013 .. versionadded:: 3.2 1014 Replaces :meth:`readfp`. 1015 1016 .. method:: read_string(string, source='<string>') 1017 1018 Parse configuration data from a string. 1019 1020 Optional argument *source* specifies a context-specific name of the 1021 string passed. If not given, ``'<string>'`` is used. This should 1022 commonly be a filesystem path or a URL. 1023 1024 .. versionadded:: 3.2 1025 1026 1027 .. method:: read_dict(dictionary, source='<dict>') 1028 1029 Load configuration from any object that provides a dict-like ``items()`` 1030 method. Keys are section names, values are dictionaries with keys and 1031 values that should be present in the section. If the used dictionary 1032 type preserves order, sections and their keys will be added in order. 1033 Values are automatically converted to strings. 1034 1035 Optional argument *source* specifies a context-specific name of the 1036 dictionary passed. If not given, ``<dict>`` is used. 1037 1038 This method can be used to copy state between parsers. 1039 1040 .. versionadded:: 3.2 1041 1042 1043 .. method:: get(section, option, *, raw=False, vars=None[, fallback]) 1044 1045 Get an *option* value for the named *section*. If *vars* is provided, it 1046 must be a dictionary. The *option* is looked up in *vars* (if provided), 1047 *section*, and in *DEFAULTSECT* in that order. If the key is not found 1048 and *fallback* is provided, it is used as a fallback value. ``None`` can 1049 be provided as a *fallback* value. 1050 1051 All the ``'%'`` interpolations are expanded in the return values, unless 1052 the *raw* argument is true. Values for interpolation keys are looked up 1053 in the same manner as the option. 1054 1055 .. versionchanged:: 3.2 1056 Arguments *raw*, *vars* and *fallback* are keyword only to protect 1057 users from trying to use the third argument as the *fallback* fallback 1058 (especially when using the mapping protocol). 1059 1060 1061 .. method:: getint(section, option, *, raw=False, vars=None[, fallback]) 1062 1063 A convenience method which coerces the *option* in the specified *section* 1064 to an integer. See :meth:`get` for explanation of *raw*, *vars* and 1065 *fallback*. 1066 1067 1068 .. method:: getfloat(section, option, *, raw=False, vars=None[, fallback]) 1069 1070 A convenience method which coerces the *option* in the specified *section* 1071 to a floating point number. See :meth:`get` for explanation of *raw*, 1072 *vars* and *fallback*. 1073 1074 1075 .. method:: getboolean(section, option, *, raw=False, vars=None[, fallback]) 1076 1077 A convenience method which coerces the *option* in the specified *section* 1078 to a Boolean value. Note that the accepted values for the option are 1079 ``'1'``, ``'yes'``, ``'true'``, and ``'on'``, which cause this method to 1080 return ``True``, and ``'0'``, ``'no'``, ``'false'``, and ``'off'``, which 1081 cause it to return ``False``. These string values are checked in a 1082 case-insensitive manner. Any other value will cause it to raise 1083 :exc:`ValueError`. See :meth:`get` for explanation of *raw*, *vars* and 1084 *fallback*. 1085 1086 1087 .. method:: items(raw=False, vars=None) 1088 items(section, raw=False, vars=None) 1089 1090 When *section* is not given, return a list of *section_name*, 1091 *section_proxy* pairs, including DEFAULTSECT. 1092 1093 Otherwise, return a list of *name*, *value* pairs for the options in the 1094 given *section*. Optional arguments have the same meaning as for the 1095 :meth:`get` method. 1096 1097 1098 .. method:: set(section, option, value) 1099 1100 If the given section exists, set the given option to the specified value; 1101 otherwise raise :exc:`NoSectionError`. *option* and *value* must be 1102 strings; if not, :exc:`TypeError` is raised. 1103 1104 1105 .. method:: write(fileobject, space_around_delimiters=True) 1106 1107 Write a representation of the configuration to the specified :term:`file 1108 object`, which must be opened in text mode (accepting strings). This 1109 representation can be parsed by a future :meth:`read` call. If 1110 *space_around_delimiters* is true, delimiters between 1111 keys and values are surrounded by spaces. 1112 1113 1114 .. method:: remove_option(section, option) 1115 1116 Remove the specified *option* from the specified *section*. If the 1117 section does not exist, raise :exc:`NoSectionError`. If the option 1118 existed to be removed, return :const:`True`; otherwise return 1119 :const:`False`. 1120 1121 1122 .. method:: remove_section(section) 1123 1124 Remove the specified *section* from the configuration. If the section in 1125 fact existed, return ``True``. Otherwise return ``False``. 1126 1127 1128 .. method:: optionxform(option) 1129 1130 Transforms the option name *option* as found in an input file or as passed 1131 in by client code to the form that should be used in the internal 1132 structures. The default implementation returns a lower-case version of 1133 *option*; subclasses may override this or client code can set an attribute 1134 of this name on instances to affect this behavior. 1135 1136 You don't need to subclass the parser to use this method, you can also 1137 set it on an instance, to a function that takes a string argument and 1138 returns a string. Setting it to ``str``, for example, would make option 1139 names case sensitive:: 1140 1141 cfgparser = ConfigParser() 1142 cfgparser.optionxform = str 1143 1144 Note that when reading configuration files, whitespace around the option 1145 names is stripped before :meth:`optionxform` is called. 1146 1147 1148 .. method:: readfp(fp, filename=None) 1149 1150 .. deprecated:: 3.2 1151 Use :meth:`read_file` instead. 1152 1153 .. versionchanged:: 3.2 1154 :meth:`readfp` now iterates on *fp* instead of calling ``fp.readline()``. 1155 1156 For existing code calling :meth:`readfp` with arguments which don't 1157 support iteration, the following generator may be used as a wrapper 1158 around the file-like object:: 1159 1160 def readline_generator(fp): 1161 line = fp.readline() 1162 while line: 1163 yield line 1164 line = fp.readline() 1165 1166 Instead of ``parser.readfp(fp)`` use 1167 ``parser.read_file(readline_generator(fp))``. 1168 1169 1170.. data:: MAX_INTERPOLATION_DEPTH 1171 1172 The maximum depth for recursive interpolation for :meth:`get` when the *raw* 1173 parameter is false. This is relevant only when the default *interpolation* 1174 is used. 1175 1176 1177.. _rawconfigparser-objects: 1178 1179RawConfigParser Objects 1180----------------------- 1181 1182.. class:: RawConfigParser(defaults=None, dict_type=collections.OrderedDict, \ 1183 allow_no_value=False, *, delimiters=('=', ':'), \ 1184 comment_prefixes=('#', ';'), \ 1185 inline_comment_prefixes=None, strict=True, \ 1186 empty_lines_in_values=True, \ 1187 default_section=configparser.DEFAULTSECT[, \ 1188 interpolation]) 1189 1190 Legacy variant of the :class:`ConfigParser`. It has interpolation 1191 disabled by default and allows for non-string section names, option 1192 names, and values via its unsafe ``add_section`` and ``set`` methods, 1193 as well as the legacy ``defaults=`` keyword argument handling. 1194 1195 .. note:: 1196 Consider using :class:`ConfigParser` instead which checks types of 1197 the values to be stored internally. If you don't want interpolation, you 1198 can use ``ConfigParser(interpolation=None)``. 1199 1200 1201 .. method:: add_section(section) 1202 1203 Add a section named *section* to the instance. If a section by the given 1204 name already exists, :exc:`DuplicateSectionError` is raised. If the 1205 *default section* name is passed, :exc:`ValueError` is raised. 1206 1207 Type of *section* is not checked which lets users create non-string named 1208 sections. This behaviour is unsupported and may cause internal errors. 1209 1210 1211 .. method:: set(section, option, value) 1212 1213 If the given section exists, set the given option to the specified value; 1214 otherwise raise :exc:`NoSectionError`. While it is possible to use 1215 :class:`RawConfigParser` (or :class:`ConfigParser` with *raw* parameters 1216 set to true) for *internal* storage of non-string values, full 1217 functionality (including interpolation and output to files) can only be 1218 achieved using string values. 1219 1220 This method lets users assign non-string values to keys internally. This 1221 behaviour is unsupported and will cause errors when attempting to write 1222 to a file or get it in non-raw mode. **Use the mapping protocol API** 1223 which does not allow such assignments to take place. 1224 1225 1226Exceptions 1227---------- 1228 1229.. exception:: Error 1230 1231 Base class for all other :mod:`configparser` exceptions. 1232 1233 1234.. exception:: NoSectionError 1235 1236 Exception raised when a specified section is not found. 1237 1238 1239.. exception:: DuplicateSectionError 1240 1241 Exception raised if :meth:`add_section` is called with the name of a section 1242 that is already present or in strict parsers when a section if found more 1243 than once in a single input file, string or dictionary. 1244 1245 .. versionadded:: 3.2 1246 Optional ``source`` and ``lineno`` attributes and arguments to 1247 :meth:`__init__` were added. 1248 1249 1250.. exception:: DuplicateOptionError 1251 1252 Exception raised by strict parsers if a single option appears twice during 1253 reading from a single file, string or dictionary. This catches misspellings 1254 and case sensitivity-related errors, e.g. a dictionary may have two keys 1255 representing the same case-insensitive configuration key. 1256 1257 1258.. exception:: NoOptionError 1259 1260 Exception raised when a specified option is not found in the specified 1261 section. 1262 1263 1264.. exception:: InterpolationError 1265 1266 Base class for exceptions raised when problems occur performing string 1267 interpolation. 1268 1269 1270.. exception:: InterpolationDepthError 1271 1272 Exception raised when string interpolation cannot be completed because the 1273 number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`. Subclass of 1274 :exc:`InterpolationError`. 1275 1276 1277.. exception:: InterpolationMissingOptionError 1278 1279 Exception raised when an option referenced from a value does not exist. 1280 Subclass of :exc:`InterpolationError`. 1281 1282 1283.. exception:: InterpolationSyntaxError 1284 1285 Exception raised when the source text into which substitutions are made does 1286 not conform to the required syntax. Subclass of :exc:`InterpolationError`. 1287 1288 1289.. exception:: MissingSectionHeaderError 1290 1291 Exception raised when attempting to parse a file which has no section 1292 headers. 1293 1294 1295.. exception:: ParsingError 1296 1297 Exception raised when errors occur attempting to parse a file. 1298 1299 .. versionchanged:: 3.2 1300 The ``filename`` attribute and :meth:`__init__` argument were renamed to 1301 ``source`` for consistency. 1302 1303 1304.. rubric:: Footnotes 1305 1306.. [1] Config parsers allow for heavy customization. If you are interested in 1307 changing the behaviour outlined by the footnote reference, consult the 1308 `Customizing Parser Behaviour`_ section. 1309