access abook addressbook with curses

Ben C spamspam at spam.eggs
Sun Aug 6 17:10:14 EDT 2006


On 2006-08-06, Fabian Braennstroem <f.braennstroem at gmx.de> wrote:
> Hi Ben,
>
> * Ben C <spamspam at spam.eggs> wrote:
>> On 2006-08-05, Fabian Braennstroem <f.braennstroem at gmx.de> wrote:
>>> Hi,
>>>
>>> I want to get access to my abook address file with python.
>>> Does anyone have some python lines to achive this using
>>> curses? If not, maybe anybody has small python program doing
>>> it with a gui!?
>>
>> You can just parse the abook addressbook with the ConfigParser, try
>> this:
>>
>> import os
>> from ConfigParser import *
>>
>> abook = ConfigParser()
>> abook.read(os.environ["HOME"] + "/.abook/addressbook")
>>
>> for s in abook.sections():
>>     print abook.items(s)
>
> Thanks! I found a different example too:
>
> import ConfigParser
> import string
>
> config = ConfigParser.ConfigParser()
>
> config.read("/home/fab/.abook/addressbook")
>
> # print summary
> print
> for number in [2,200]:
>     print string.upper(config.get(str(number), "email"))
>     print string.upper(config.get(str(number), "name"))
>     print string.upper(config.get(str(number), "city"))
>     print string.upper(config.get(str(number), "address"))
>
> but the problem seems to be that abook does not write every
> field, so I get an exception when there is a field missing:
>
> Traceback (most recent call last):
>   File "configparser-example-1.py", line 13, in ?
>     print string.upper(config.get(str(number), "city"))
>   File "/usr/lib/python2.4/ConfigParser.py", line 520, in get
>     raise NoOptionError(option, section)
> ConfigParser.NoOptionError: No option 'city' in section: '2'
>
> Section 2 looks like:
>
> [2]
> name=Andrs Gzi
> email=anes.oi at ik.e
> nick=oz
>
> Is there a workaround?

You can construct the parser with a dictionary of defaults:

    config = ConfigParser.ConfigParser({"city" : "unknown",
        "zip" : "unknown"})

that kind of thing.

Or catch the exceptions. Or use config.options("2") to see what options
exist in section 2 before you try to read them.



More information about the Python-list mailing list