Что этот len (sys.argv)! = 2 делает в следующем коде protobuf? - PullRequest
0 голосов
/ 18 июня 2019

Я новичок в буфере протокола и сейчас работаю над ним.Я проверял учебник в руководстве разработчика Google для protobuf.Я нашел программу на python для записи данных в буфер протокола.Здесь я не понимаю, что делает эта линия.Также, чтобы выполнить это, я должен передать любые аргументы в cmd. (Windows)

    if len(sys.argv) != 2:
      print "Usage:", sys.argv[0], "ADDRESS_BOOK_FILE"
      sys.exit(-1)

Это следующий код ниже для записи данных.

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."


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] + ": Could not open file.  Creating a new one."

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

1 Ответ

1 голос
/ 18 июня 2019

Эта часть проверяет количество предоставленных параметров. Если чего-то не хватает, программа существует с ошибкой. Более подробную информацию можно найти здесь .

Я бы порекомендовал перейти на выделенную платформу (например, click) для управления созданием CLI (интерфейсов командной строки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...