Maison > Article > développement back-end > Explication détaillée et exemples simples de python getopt
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=[])
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
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
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']
Tout d'abord, analysez les paramètres, où les paramètres courts incluent :
-v,-p,-k,
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']
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 !