A configuration file handler for the most basic stuff in ini files that will get you up and running in no time.
pyconfigreader's ConfigReader
uses Python's ConfigParser to parse config files.
PS: This is just to get you working on other stuff and not focus on config files. If you need advanced features head to Python's ConfigParser or read pyconfigreader's documentation.
$ pip install pyconfigreader
ConfigReader
creates a default main
section in which key-value pairs are inserted if no section is specified.
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
config.set('version', '2') # Saved to section `main`
config.set('Key', 'Value', section='Section') # Creates a section `Section` on-the-fly
config.set('name', 'main')
config.close(save=True) # Save on close
# Or explicitly call
# config.save()
# config.close()
By default, changes are not immediately written to the file on disk but are kept in memory.
commit=True
writes the changes to the file on disk.
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
config.set('okay', 'True', commit=True)
Getting values only requires specifying the key. If the key does not exist then None is returned. No exception is raised.
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
name = config.get('name')
okay = config.get('okay')
section = config.get('Key', section='Section') # Get from the section `Section`
agency = config.get('agency') # Raises NoOptionError
print(config.sections) # Get a list of sections
key, value, section = config.search('config') # Search for the parameters of a value. Returns a tuple
help(config)
config.close() # Don't forget to close the file object
Sometimes, if a key is not available a return value may be added using the default
argument
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
name = config.get('country', default='Kenya') # Returns Kenya since key was not available in config file
config.close()
The return value, by default, is not saved to file but this can be enabled by
setting default_commit
=True
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
name = config.get('name', default='Kenya', default_commit=True)
config.close()
Any call to commit
saves all the in-memory changes to the file on disk.
Options can be remove permanently
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
config.remove_option('reader') # the reader option is always set by default
# or config.remove_key('reader')
config.set('name', 'first', section='Details')
config.remove_option('name', section='Details')
config.close(save=True)
Sections are created when keys and values are added to them.
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
config.set('name', 'first', section='Details') # Save key `name` with value `first` in section `Details`
config.close()
Sections can be removed explicitly.
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
config.set('name', 'first', section='Details') # Creates section `Details`
config.remove_section('Details') # Removes section `Details` plus all the keys and values
config.close(save=True)
Section items can be acquired as dictionary values
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
config.set('name', 'first', section='Details')
config.get_items('Details')
# OrderedDict([('name', 'first')])
config.close() # Or config.close(save=True)
Configuration values can be save to the environment (os.environ
)
import os
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
config.set('name', 'first', section='Details')
config.to_env()
os.environ['DETAILS_NAME']
# first
os.environ['MAIN_READER']
# configreader
config.close()
The environment keys are formed from the section name and the key name.
Changes are not written to disk unless commit
is set to True.
Another alternative is calling to_file
from pyconfigreader import ConfigReader
config = ConfigReader(filename='config.ini')
config.set('name', 'first', section='Details')
config.save()
config.close()
As a context, the changes are saved when the object is closed.
from pyconfigreader import ConfigReader
with ConfigReader(filename='config.ini') as config:
config.set('name', 'first', section='Details')
The contents of the config file can also be dumped to a JSON file.
from pyconfigreader import ConfigReader
reader = ConfigReader()
reader.set('name', 'first', section='Details')
with open('config.json', 'w') as f:
reader.to_json(f)
reader.close()
A lot more on help(config)
See pyconfigreader documentation.
Distributed under MIT