Hi Ben, * Ben C <[EMAIL PROTECTED]> wrote: > On 2006-08-08, Fabian Braennstroem <[EMAIL PROTECTED]> wrote: >> Hi Ben, >> >> * Ben C <[EMAIL PROTECTED]> wrote: >>> On 2006-08-06, Fabian Braennstroem <[EMAIL PROTECTED]> wrote: >>>> Hi Ben, >>>> >>>> * Ben C <[EMAIL PROTECTED]> wrote: >>>>> On 2006-08-05, Fabian Braennstroem <[EMAIL PROTECTED]> 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 PROTECTED] >>>> 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. >> >> Thanks! I will try it out! > > Looking at the bigger picture here, though, I may be giving you the > wrong advice. Mutt just invokes abook to get the addresses I think, > that's why you put > > set query_command="abook --mutt-query '%s'" > > So you could do the same (if what you're trying to do is write a mutt > clone in Python): > > import subprocess > > name = "Andrs" > subprocess.Popen("abook --mutt-query " + name, > stdout=subprocess.PIPE, shell=True).communicate()[0] > > The difference is that this "leverages" abook to do the search, not just > to store the data, which is a logical approach. > > On the other hand, this way, you require that abook is installed on the > machine, which is no good if the object of the exercise is a portable > Python-only solution.
The biggest problem is a missing and not allowed abook installation. But thanks for your tips! Greetings! Fabian -- http://mail.python.org/mailman/listinfo/python-list