For details about the use of the getopt function in Python, pythongetopt

Source: Internet
Author: User

For details about the use of the getopt function in Python, pythongetopt

Function prototype:

getopt.getopt(args, shortopts, longopts=[])


Parameter description:

  • Args: args is the list of parameters to be parsed. Sys. argv [1:] is generally used to filter out the first parameter (ps: the first parameter is the Script Name and should not be parsed as a parameter)
  • Shortopts: abbreviated parameter list
  • Longopts: long parameter list

Return Value:

  • Opts: The analyzed (option, value) List pair.
  • Args: list of remaining command line parameters that do not belong to the format information.

Source code analysis

In the OTA build system generated by Android, The ParseOptions function in the common. py file is used to parse the input parameters. We can use this function to analyze the usage of getopt.

The function source code is as follows:

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

Specifically, extra_option_handler can be understood as a function pointer, and its function is also to parse opts key-value pairs.
The source code of extra_option_handler is as follows:

 

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


The parameters argv for generating an OAT full package are as follows:

Copy codeThe Code is as follows: 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]


First, analyze the parameters. The short parameters include:
-v,-p,-k,


After resolution, the generated results are as follows:

Copy codeThe Code is as follows: 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']

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.