configparser bug
Christos Malliopoulos
cmalliopoulos at gmail.com
Thu Jan 26 07:13:30 EST 2017
Thanx Peter for your prompt response.
I replaced tabs with spaces and had no problem reading the file.
I think however it is sth to correct in next versions
BR
Chris
On Wed, Jan 25, 2017 at 1:32 PM Peter Otten <__peter__ at web.de> wrote:
> Christos Malliopoulos wrote:
>
> > Hi,
> >
> > I run Ubuntu 16.04 LTS in a VM using VMWare Workstation on a Windows 10
> > host.
> > apt show python-configparser shows 3.3.0r2-2
> > On python 2.7.12 I use the following code:
> >
> > import configparser as cfg
> > root =
> > u'/'.join(os.path.split(os.path.abspath('cfg.py'))[0].split('/')[:-2])
> > cp = cfg.ConfigParser(interpolation = cfg.ExtendedInterpolation())
> > cp.read(os.path.abspath(os.path.join(root, u'config/sampling.cfg')))
>
> This looks confusing. Are you sure you are reading the right sampling.cfg?
>
> > cp.items('Sampling')
> >
> > sampling.cfg contains the following lines:
> > [Sampling]
> > nobs = 10
> > nzin = 4
> > nzout = 3
> > ndrops = 1
> >
> > inh = day,loc,z0,value
> > outh = day,loc,sku,value
> >
> > invalran = 1,1e3
> > outvalran = 1,1000
> >
> > cp.items(u'Sampling') prints the following:
> > [(u'nobs', u'10'),
> > (u'nzin', u'4'),
> > (u'nzout', u'3\nndrops = 1'),
> > (u'inh', u'day,loc,z0,value'),
> > (u'outh', u'day,loc,sku,value'),
> > (u'invalran', u'1,1e3'),
> > (u'outvalran', u'1,1000')]
> >
> > ndrops = 1 is not parsed correctly
>
> It looks like the parser does not expand tabs, and your problem may be
> mixing tabs and spaces:
>
> $ cat demo.py
> import configparser
>
> data = """\
> [Sampling]
> \talpha = 1
> \tbeta = 2
> \tgamma = 3
> \tdelta = 4
> """
> print "what you see:"
> print data.expandtabs(4)
>
> print "what the parser sees:"
> print data.replace("\t", " ")
>
> with open("sampling.cfg", "w") as f:
> f.write(data)
>
> cp = configparser.ConfigParser(
> interpolation=configparser.ExtendedInterpolation()
> )
> cp.read("sampling.cfg")
> for item in cp.items('Sampling'):
> print item
> $ python demo.py
> what you see:
> [Sampling]
> alpha = 1
> beta = 2
> gamma = 3
> delta = 4
>
> what the parser sees:
> [Sampling]
> alpha = 1
> beta = 2
> gamma = 3
> delta = 4
>
> (u'alpha', u'1')
> (u'beta', u'2\ngamma = 3')
> (u'delta', u'4')
> $
>
>
> --
> https://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list