ConfigParser and .ini files
Ivan Van Laningham
ivanlan at callware.com
Fri Jan 21 13:04:33 EST 2000
Hi All--
"Fred L. Drake, Jr." wrote:
>
> super_banane at yahoo.com writes:
> > The ConfigParser class in the default Python libraries
> > does not support comments given on the value lines, separated
> > by a semicolon, such as:
> >
> > [Section]
> > keyword = value ; put your comments here
>
> You're right, it doesn't.
> Does anyone know of a *real* specification for the .ini format? I
> didn't know this was allowed.
>
The spec is how Windows treats .ini files. ...
[snip]
> These should really be separated, because what most people want is a
> conventional .ini file parser.
Yup. That's what I'm looking for this morning!
> Anyway, I've attached a patch that allows ConfigParser to strip out
> ';' comments from .ini-style entries (using '=' instead of ':' as the
> value separator); RFC822-style entries should *not* be affected. I
> think this is closer to what you're looking for.
> I can check this in if this is the right approach. I'm still not
> happy with the overloaded syntax, but this might be closer to getting
> the syntaxes properly implemented. People should tell me if this is
> really the right thing to do, and if it breaks anything.
>
I applied the patch, hoping it would help with my problem, but it
didn't. Basically, what I'm seeing is two things:
1) Section headers of the form "[Button States]" come up as
ParsingError because of the whitespace. I read the regex for the
headers as allowing whitespace in the header, so what's going on here?
Here's the regex:
__SECTCRE = re.compile(
r'\[' # [
r'(?P<header>[-\w]+)' # `-', `_' or any alphanum
r'\]' # ]
)
Not being a regex guru (not even an acolyte), I'm probably unqualified
to evaluate it. What should this be to allow whitespace in section
names? [*lots* of .ini files have whitespace in the section names. ...]
2) The ParsingError lists the lines it thinks are bad at the end of the
run, but they come up like this on the listing:
[line 5]: '[Button States]\012'
[line 23]: '[CallWare Archive]\012'
Now, is this because ConfigParser thinks it's on UNIX, because it treats
everything as a UNIX file, because it is not expecting the '\r\n'
combination, or because it's broken?
<patiently-awaiting-enlightenment>-ly y'rs,
Ivan
----------------------------------------------
Ivan Van Laningham
Callware Technologies, Inc.
ivanlan at callware.com
ivanlan at home.com
http://www.pauahtun.org
See also:
http://www.foretec.com/python/workshops/1998-11/proceedings.html
Army Signal Corps: Cu Chi, Class of '70
Author: Teach Yourself Python in 24 Hours
----------------------------------------------
More information about the Python-list
mailing list