Python library for reading and writing configuration file formats found on a *nix system
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
test
.gitignore
.travis.yml
LICENSE
Makefile
README.md
setup.py

README.md

cfgio

cfgio is a python library for reading and writing configuration file formats found on a *nix system. The core goal is to provide an r/w API to files in different formats and still maintaining the overall layout (comments, structure) of the files.

Why?

Because i often need to read and write configuration files on systems. Typically i open the file, read it and use a mix of string functions and regular expression to extract the values i need. When it comes to writing configuration files things get nasty. Have you ever tried to diff a config which has been re-written by a program?

Examples

Reading entries from /etc/fstab

from cfgio import fstab
fstab = fstab.FstabConfig('/etc/fstab')
print(fstab.get('/dev/sda2'))

/dev/sda2 on /boot (ext4), opts: noatime,discard (1/2)

** Reading Xen domU configurations **

from cfgio.specialized import xen
cfg = xen.XenConfig('/etc/xen/test.cfg')
print(cfg.get('memory').value)
>> 1024
print(cfg.get('vif').value)
>> [<cfgio.specialized.xen.XenDomUVifConfigValue object at 0x25e6210>]

Attention: work in progress

cfgio is far away from being a full-featured library. Some important features are still missing:

  • no multiline support. cfgio will skip subsequent lines and mark them as garbage
  • cfgio does not uncomment variables. Instead it will add a new line to the file
  • Reading bash "configs" using a KeyValueConfig may lead into suprising result. cfgio does not handle this very well, e.g. splitting up variable assignments into multiple lines.
  • ...