Skip to main content

ini-parser

An ini format parser and serializer for Python.

Sections are treated as nested dictionaries. Items before the first heading are saved on the object directly.

Usage

Consider an ini-file config.ini that looks like this:

; this comment is being ignored
scope = global

[database]
user = dbuser
password = dbpassword
database = use_this_database

[paths.default]
datadir = /var/lib/data
array[] = first value
array[] = second value
array[] = third value

You can read, manipulate and write the ini-file like so:

import ini

config = ini.parse(open('config.ini').read(), preserve_comments=True)

config['scope'] = 'local'
config['database']['database'] = 'use_another_database'
config['paths']['default']['tmpdir'] = '/tmp'
del config['paths']['default']['datadir']
config['paths']['default']['array'].append('fourth value')

with open('config_modified.ini', 'w+') as f:
    f.write(ini.stringify(config, section='section'))

This will result in a file called config_modified.ini being written to the filesystem with the following content:

[section]
scope = local

[section.database]
user = dbuser
password = dbpassword
database = use_another_database

[section.paths.default]
array[] = first value
array[] = second value
array[] = third value
array[] = fourth value
tmpdir = /tmp

API

decode(inistring, on_empty_key=None, preserve_comments=True)

Decode the ini-style formatted inistring into a nested object.

  • on_empty_key: Value to use when a key with no value is encountered during parsing. If set, any key in the INI file that lacks a value will be assigned this value.
  • preserve_comments: Boolean to specify whether to preserve comments when parsing. If set to True, comments will be included in the output and parsed from the input. Default is False.

parse(inistring, on_empty_key=None, preserve_comments=True)

Alias for decode(inistring)

encode(object, section=None, whitespace=True)

Encode the object object into an ini-style formatted string. If the optional parameter section is given, then all top-level properties of the object are put into this section and the section-string is prepended to all sub-sections, see the usage example above.

The options object may contain the following:

  • section - A string which will be the first section in the encoded ini data. Defaults to none.
  • whitespace - Boolean to specify whether to put whitespace around the = character. By default, whitespace is omitted, to be friendly to some older parsers. If set to True, whitespace will be added for readability.

stringify(object, section=None, whitespace=True)

Alias for encode(object, [options])

safe(val)

Escapes the string val such that it is safe to be used as a key or value in an ini-file. Basically escapes quotes. For example

ini.safe('"unsafe string"')

would result in

"\"unsafe string\""

unsafe(val)

Unescapes the string val

Metadata

Release files for ini-parser 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ini-parser 2.0.1
File Size Uploaded
ini_parser-2.0.1.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ini-parser 2.0.1
File Interpreter ABI Platform
ini_parser-2.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 12.2 kB

Release files / ini_parser-2.0.1.tar.gz

Download URL ini_parser-2.0.1.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b4ec5176aebaa912d84af9f9d5b587cd4444f3e8b3432e66a6f7e6ca6e50c3d9
BLAKE2b-256 checksum
How to use checksums
96e2febbd0a64b63d9cb2dcb1a373339fcffe51390a79e76b885a1492d91e4fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / ini_parser-2.0.1-py3-none-any.whl

Download URL ini_parser-2.0.1-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
91e5db1360b33a0a9a0852de74fdad508c7683e6b4dd1c74faa4ce1d7c13e23e
BLAKE2b-256 checksum
How to use checksums
a3912de657aca501f255d79399d360aeb88987f8ece8bdfdc645a65cc742557f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

2.0.1 This release

2 release files

2.0.0

2 release files

1.2.1

2 release files

1.2.0

1 release file

1.1.0

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page