Skip to main content

An ini parser/serializer in Python

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ini_parser-2.0.1.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ini_parser-2.0.1-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file ini_parser-2.0.1.tar.gz.

File metadata

  • Download URL: ini_parser-2.0.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for ini_parser-2.0.1.tar.gz
Algorithm Hash digest
SHA256 b4ec5176aebaa912d84af9f9d5b587cd4444f3e8b3432e66a6f7e6ca6e50c3d9
MD5 67e5f77a0e080dc1e2e69929badbd5b2
BLAKE2b-256 96e2febbd0a64b63d9cb2dcb1a373339fcffe51390a79e76b885a1492d91e4fd

See more details on using hashes here.

File details

Details for the file ini_parser-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: ini_parser-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for ini_parser-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 91e5db1360b33a0a9a0852de74fdad508c7683e6b4dd1c74faa4ce1d7c13e23e
MD5 5a384fb724f872b2df9b06ac4f8d8166
BLAKE2b-256 a3912de657aca501f255d79399d360aeb88987f8ece8bdfdc645a65cc742557f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page