import dbus import sys, os import tempfile import re # DBUS session address ps = os.popen ('ps auxwwwwe | grep -m 1 DBUS_SESSION_BUS_ADDRESS') l = ps.read () r = re.compile ('DBUS_SESSION_BUS_ADDRESS=(\S+)') m = r.search (l) a = m.expand ('\\1') os.environ ['DBUS_SESSION_BUS_ADDRESS'] = a # dbus object bus_name = 'org.gnome.evolution.dataserver.AddressBook' obj_name = "/org/gnome/evolution/dataserver/addressbook/file_3a__2f__2f__2f_home_2f_root_2f__2e_evolution_2f_addressbook_2f_local_2f_system" addressBook = None def getAddressBook(): global addressBook if addressBook is None: sb = dbus.SessionBus() obj = sb.get_object(bus_name, obj_name) addressBook = dbus.Interface(obj, 'org.gnome.evolution.dataserver.addressbook.Book') return addressBook def makeVcard(name, phones): vcard = "BEGIN:VCARD\nVERSION:3.0\n" vcard += "FN:" + name + "\n" for phone in phones: vcard += "TEL;HOME:" + phone + "\n" vcard += "END:VCARD" return vcard def readCSV(): phonebook = {} f = open(r'cx65') for line in f: item = line.split(',') number = item[1].strip('"') name = item[2].strip('"\n') if phonebook.has_key(name): phonebook[name]+=[number] else: phonebook[name]=[number] return phonebook phonebook = readCSV() for name, phones in phonebook.iteritems(): print str(getAddressBook().addContact(makeVcard(name, phones)))