ConfigRW is a simple python module which read and write config files based on key-value or INI-structure.
- 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 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
You can find a full manual on how to use ConfigRW at readthedocs
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
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
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