"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())