123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #! /usr/bin/env python
- # See README.txt for information and build instructions.
- import addressbook_pb2
- import sys
- try:
- raw_input # Python 2
- except NameError:
- raw_input = input # Python 3
- # This function fills in a Person message based on user input.
- def PromptForAddress(person):
- person.id = int(raw_input("Enter person ID number: "))
- person.name = raw_input("Enter name: ")
- email = raw_input("Enter email address (blank for none): ")
- if email != "":
- person.email = email
- while True:
- number = raw_input("Enter a phone number (or leave blank to finish): ")
- if number == "":
- break
- phone_number = person.phones.add()
- phone_number.number = number
- type = raw_input("Is this a mobile, home, or work phone? ")
- if type == "mobile":
- phone_number.type = addressbook_pb2.Person.MOBILE
- elif type == "home":
- phone_number.type = addressbook_pb2.Person.HOME
- elif type == "work":
- phone_number.type = addressbook_pb2.Person.WORK
- else:
- print("Unknown phone type; leaving as default value.")
- # Main procedure: Reads the entire address book from a file,
- # adds one person based on user input, then writes it back out to the same
- # file.
- if len(sys.argv) != 2:
- print("Usage:", sys.argv[0], "ADDRESS_BOOK_FILE")
- sys.exit(-1)
- address_book = addressbook_pb2.AddressBook()
- # Read the existing address book.
- try:
- with open(sys.argv[1], "rb") as f:
- address_book.ParseFromString(f.read())
- except IOError:
- print(sys.argv[1] + ": File not found. Creating a new file.")
- # Add an address.
- PromptForAddress(address_book.people.add())
- # Write the new address book back to disk.
- with open(sys.argv[1], "wb") as f:
- f.write(address_book.SerializeToString())
|