configrw

ConfigRW is a simple reader and writer config files based on key-value or INI-structure.


Keywords
ini, ini-parser, parser, python, python-library, python3
License
MIT
Install
pip install configrw==1.1.0

Documentation

ConfigRW

ConfigRW is a simple python module which read and write config files based on key-value or INI-structure.

Key features

  • Maximum preserves formatting of the source file (indents, spaces, comments, etc)
  • Support non-section (for access for simple config files based on key-value)
  • Inserting an option on an arbitrary string in the section
  • Support multiple values of option
  • Support options without values
  • Support comments in a section
  • Support indentation for options, values
  • Secure file rewriting. Using *.new file on write, then renamed to original filename

Installation

Installation package to user python-library directory:

$ pip install --user configrw

Or you can install package to global system directory of python libraries (not recommended):

$ sudo pip install configrw

Documentation

You can find a full manual on how to use ConfigRW at readthedocs

Quick start

In next examples we will use the following INI file:

# This is comment
some option = some value
second option  = -100

[ SECTION1 ] # comment
    option1 = 100
    option2 = 200
    # comment
    option3 = 1.2

[ section2 ]
    param1 = 'str'
    param2 = 0 # comment
    parameter_without_value

[section3]
    extensions =
        # comment1
        ext1
        # comment2
        ext2
        ext3

Access to non-section area

This is features needed if you want use simple key-value of config file

from configrw import Config

config = Config.from_file('/path/to/file')

section = config[None]             # Getting non-section
value = section['some option']     # Getting the value
section['some option'] = 100       # Setting the value
del section['some option']         # Deleting the option

Access to section area

This is features needed if you want use INI config file

value = config['SECTION1']['option2']       # Getting the value
config['SECTION1']['option2'] = 0           # Setting the value
config['SECTION1']['option3'] = 300         # Adding new option to section

config['section3']['extensions'].append('ext4')     # Adding new value to multiple values
config['section3']['extensions'].insert('ext0', 0)  # Inserting new value
config['section3']['extensions'][0] = 'extension0'  # Changing single value of multiple values

config.write('/path/to/file')               # Saving config to file

# Render config to screen
for line in config.to_text():
    print(line)

INI-file after changes:

# This is comment
some option

[ SECTION1 ] # comment
    option1 = 100
    option2 = 0
    # comment
    option3 = 300

[ section2 ]
    param1 = 'str'
    param2 = 0 # comment
    parameter_without_value

[section3]
    extensions =
        extension0
        # comment1
        ext1
        # comment2
        ext2
        ext3
        ext4