Index: third_party/protobuf/examples/add_person.py |
diff --git a/third_party/protobuf/examples/add_person.py b/third_party/protobuf/examples/add_person.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..fd81c982110941cc46476208c66ab1d60099e5f3 |
--- /dev/null |
+++ b/third_party/protobuf/examples/add_person.py |
@@ -0,0 +1,58 @@ |
+#! /usr/bin/env python |
+ |
+# See README.txt for information and build instructions. |
+ |
+import addressbook_pb2 |
+import sys |
+ |
+# 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: |
+ f = open(sys.argv[1], "rb") |
+ address_book.ParseFromString(f.read()) |
+ f.close() |
+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. |
+f = open(sys.argv[1], "wb") |
+f.write(address_book.SerializeToString()) |
+f.close() |