KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm using ConfigParser to load in data from a configuration file as follows: test.conf: [myfiles] fileone: %(datadir)s/somefile.foo filetwo: %(datadir)s/nudderfile.foo load.py: import ConfigParser config = ConfigParser.ConfigParser({'datadir': '/tmp'}) config.read('test.conf') print config.items('myfiles') print config.get('myfiles', 'datadir') Output: $ python load.py [('datadir', '/tmp'), ('filetwo', '/tmp/nudderfile.foo'), ('fileone', '/tmp/somefile.foo')] /tmp I'm surprised that the defaults for variable substitution ('datadir', '/tmp') are showing up as part of the . items() and .get() returns, as if they were values in the configuration file. Is this behavior expected? Any work arounds, so that I can simply iterate .items() without getting the default dictionary values in there, but still using the magic interpolation? Reference: http://docs.python.org/library/configparser.html Thanks! Update: It's been pointed out that this is the expected behavior: defaults are just like any other name/value pair in the configuration file. Similarly, the name/value pairs in the configuration file are also available for "magic interpolation", so if I define: foo: bar zap: %(foo)snowl I'll get [... ('zap': 'barnowl')] That's pretty neat, but I'm still wondering if I can accomplish what I want to accomplish: iterate over the name/value pairs in my configuration files, with interpolation of variables, without the defaults. My specific scenario is this: I wanted to initialize the config object with something like {basedir: '/foo/bar'} , as the absolute paths to certain files varie
Tags (comma-separated)
Save Edits
Cancel