Maison > développement back-end > Tutoriel Python > Explication détaillée et exemples simples de python getopt

Explication détaillée et exemples simples de python getopt

高洛峰
Libérer: 2017-02-11 13:19:39
original
1289 Les gens l'ont consulté

Cet article présente principalement l'explication détaillée et des exemples simples de python getopt. Les amis qui en ont besoin peuvent se référer à

Explication détaillée de python getopt

Prototype de fonction :

getopt.getopt(args, shortopts, longopts=[])
Copier après la connexion

Explication des paramètres :

  • args : args est la liste de paramètres qui doit être analysée. Utilisez généralement sys.argv[1:], qui peut filtrer le premier paramètre (ps : le premier paramètre est le nom du script, il ne doit pas être analysé comme un paramètre)

  • shortopts : liste de paramètres abrégée

  • longopts : liste de paramètres longue

Valeur de retour :

  • opts : les paires de listes analysées (option, valeur).

  • args : Liste des arguments de ligne de commande restants qui ne sont pas des informations de format.

Analyse du code source

Dans le système de build Android qui génère OTA, la fonction ParseOptions du fichier common.py est utilisée pour analyser l'entrée paramètres , analysons l'utilisation de getopt à travers l'implémentation de cette fonction.

Le code source de la fonction est le suivant :

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
Copier après la connexion

Parmi eux, extra_option_handler peut être compris comme un pointeur de fonction, et sa fonction consiste également à analyser les paires clé-valeur de opts .

Le code source extra_option_handler est le suivant :

 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
Copier après la connexion

Généralement, le paramètre argv pour générer le package complet OAT est le suivant :

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']
Copier après la connexion

Tout d'abord, analysez les paramètres, où les paramètres courts incluent :

-v,-p,-k,
Copier après la connexion

Après analyse Finalement, les résultats générés sont les suivants :

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']
Copier après la connexion

Merci d'avoir lu, j'espère que cela pourra aider tout le monde, merci pour votre soutien à ce site !

Pour des explications plus détaillées et des exemples simples de python getopt, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal