1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#! /usr/bin/python 2fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# See README.txt for information and build instructions. 4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleimport addressbook_pb2 6fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleimport sys 7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Iterates though all people in the AddressBook and prints info about them. 9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledef ListPeople(address_book): 10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for person in address_book.person: 11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville print "Person ID:", person.id 12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville print " Name:", person.name 13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if person.HasField('email'): 14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville print " E-mail address:", person.email 15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for phone_number in person.phone: 17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if phone_number.type == addressbook_pb2.Person.MOBILE: 18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville print " Mobile phone #:", 19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif phone_number.type == addressbook_pb2.Person.HOME: 20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville print " Home phone #:", 21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif phone_number.type == addressbook_pb2.Person.WORK: 22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville print " Work phone #:", 23fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville print phone_number.number 24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Main procedure: Reads the entire address book from a file and prints all 26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the information inside. 27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif len(sys.argv) != 2: 28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville print "Usage:", sys.argv[0], "ADDRESS_BOOK_FILE" 29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sys.exit(-1) 30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleaddress_book = addressbook_pb2.AddressBook() 32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Read the existing address book. 34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillef = open(sys.argv[1], "rb") 35fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleaddress_book.ParseFromString(f.read()) 36fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillef.close() 37fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 38fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleListPeople(address_book) 39