Ausführliche Erklärung und einfache Beispiele für Python-Getopt

高洛峰
Freigeben: 2017-02-11 13:19:39
Original
1215 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die detaillierte Erklärung und einfache Beispiele von Python-Getopt vor. Freunde, die es benötigen, können sich auf

Ausführliche Erklärung von Python-Getopt

Funktionsprototyp beziehen:

getopt.getopt(args, shortopts, longopts=[])
Nach dem Login kopieren

Parametererklärung:

  • args: args ist die Parameterliste, die analysiert werden muss. Verwenden Sie im Allgemeinen sys.argv[1:], das den ersten Parameter herausfiltern kann (ps: Der erste Parameter ist der Name des Skripts, er sollte nicht als Parameter analysiert werden)

  • shortopts: abgekürzte Parameterliste

  • longopts: lange Parameterliste

Rückgabewert:

  • opts: Die analysierten (Option, Wert) Listenpaare.

  • args: Liste der verbleibenden Befehlszeilenargumente, die keine Formatinformationen sind.

Quellcode-Analyse

Im Android-Build-System, das OTA generiert, wird die ParseOptions-Funktion in der Datei common.py zum Parsen der Eingabe verwendet Lassen Sie uns die Verwendung von getopt anhand der Implementierung dieser Funktion analysieren.

Der Funktionsquellcode lautet wie folgt:

def ParseOptions(argv, docstring, extra_opts="", extra_long_opts=(), extra_option_handler=None):
  try:
    opts, args = getopt.getopt(
      argv, "hvp:s:x" + extra_opts,
      ["help", "verbose", "path=", "signapk_path=", "extra_signapk_args=", "java_path=", "public_key_suffix=", "private_key_suffix=", "device_specific=", "extra="] + list(extra_long_opts))
  except getopt.GetoptError, err:
    Usage(docstring)
    print "**", str(err), "**"
    sys.exit(2)

  path_specified = False

  for o, a in opts:
    if o in ("-h", "--help"):
      Usage(docstring)
      sys.exit()
    elif o in ("-v", "--verbose"):
      OPTIONS.verbose = True
    elif o in ("-p", "--path"):
      OPTIONS.search_path = a
    elif o in ("--signapk_path",):
      OPTIONS.signapk_path = a
    elif o in ("--extra_singapk_args",):
      OPTIONS.extra_signapk_args = shlex.split(a)
    elif o in ("--java_path",):
      OPTIONS.java_path = a
    else:
      if extra_option_handler is None or not extra_option_handler(o, a):
      assert False, "unknown option \"%s\"" % (o,)

  os.environ["PATH"] = (os.path.join(OPTIONS.search_path, "bin") + os.pathsep + os.environ["PATH"])

  return args
Nach dem Login kopieren

Unter diesen kann extra_option_handler als Funktionszeiger und seine Funktion verstanden werden besteht auch darin, die Schlüssel-Wert-Paare von opts zu analysieren.

Der Quellcode von extra_option_handler lautet wie folgt:

 def option_handler(o, a):
  if o in ("-b", "--board_config"):
   pass  # deprecated
  elif o in ("-k", "--package_key"):
   OPTIONS.package_key = a
  elif o in ("-i", "--incremental_from"):
   OPTIONS.incremental_source = a
  elif o in ("-w", "--wipe_user_data"):
   OPTIONS.wipe_user_data = True
  elif o in ("-n", "--no_prereq"):
   OPTIONS.omit_prereq = True
  elif o in ("-e", "--extra_script"):
   OPTIONS.extra_script = a
  elif o in ("-a", "--aslr_mode"):
   if a in ("on", "On", "true", "True", "yes", "Yes"):
    OPTIONS.aslr_mode = True
   else:
    OPTIONS.aslr_mode = False
  elif o in ("--worker_threads"):
   OPTIONS.worker_threads = int(a)
  else:
   return False
  return True
Nach dem Login kopieren

Im Allgemeinen lautet der Parameter argv zum Generieren des OAT-Vollpakets wie folgt :

argv = ['-v', '-p', 'out/host/linux-xxx', '-k', 'build/target/product/security/testkey',
 'out/target/product/xxx/obj/PACKAGING/target_files_intermediates/xxx-target_files.zip', 
'out/target/product/xxx/xxx_20150723.1340-ota.zip']
Nach dem Login kopieren

Analysieren Sie zunächst die Parameter, wobei kurze Parameter Folgendes umfassen:

-v,-p,-k,
Nach dem Login kopieren

Nach der Analyse sind die generierten Ergebnisse schließlich wie folgt:

opts = [('-v', ''), ('-p', 'out/host/linux-x86'), 
('-k', 'build/target/product/security/testkey')]
args =['out/target/product/xxx/obj/PACKAGING/target_files_intermediates/xxx-target_files.zip',
 'out/target/product/xxx/xxx_20150723.1340-ota.zip']
Nach dem Login kopieren

Vielen Dank fürs Lesen, ich hoffe, es kann allen helfen, danke für Ihre Unterstützung dieser Seite!

Ausführlichere Erklärungen und einfache Beispiele für Python-Getopt finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!