"Fossies" - the Fresh Open Source Software Archive

Member "protobuf-3.21.1/examples/add_person.py" (27 May 2022, 1750 Bytes) of package /linux/misc/protobuf-all-3.21.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 #! /usr/bin/env python
    2 
    3 # See README.txt for information and build instructions.
    4 
    5 import addressbook_pb2
    6 import sys
    7 
    8 try:
    9   raw_input          # Python 2
   10 except NameError:
   11   raw_input = input  # Python 3
   12 
   13 
   14 # This function fills in a Person message based on user input.
   15 def PromptForAddress(person):
   16   person.id = int(raw_input("Enter person ID number: "))
   17   person.name = raw_input("Enter name: ")
   18 
   19   email = raw_input("Enter email address (blank for none): ")
   20   if email != "":
   21     person.email = email
   22 
   23   while True:
   24     number = raw_input("Enter a phone number (or leave blank to finish): ")
   25     if number == "":
   26       break
   27 
   28     phone_number = person.phones.add()
   29     phone_number.number = number
   30 
   31     type = raw_input("Is this a mobile, home, or work phone? ")
   32     if type == "mobile":
   33       phone_number.type = addressbook_pb2.Person.MOBILE
   34     elif type == "home":
   35       phone_number.type = addressbook_pb2.Person.HOME
   36     elif type == "work":
   37       phone_number.type = addressbook_pb2.Person.WORK
   38     else:
   39       print("Unknown phone type; leaving as default value.")
   40 
   41 
   42 # Main procedure:  Reads the entire address book from a file,
   43 #   adds one person based on user input, then writes it back out to the same
   44 #   file.
   45 if len(sys.argv) != 2:
   46   print("Usage:", sys.argv[0], "ADDRESS_BOOK_FILE")
   47   sys.exit(-1)
   48 
   49 address_book = addressbook_pb2.AddressBook()
   50 
   51 # Read the existing address book.
   52 try:
   53   with open(sys.argv[1], "rb") as f:
   54     address_book.ParseFromString(f.read())
   55 except IOError:
   56   print(sys.argv[1] + ": File not found.  Creating a new file.")
   57 
   58 # Add an address.
   59 PromptForAddress(address_book.people.add())
   60 
   61 # Write the new address book back to disk.
   62 with open(sys.argv[1], "wb") as f:
   63   f.write(address_book.SerializeToString())