函数原型:

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

参数解释:

args:args为需要解析的参数列表。一般使用sys.argv[1:],这样可以过滤掉第一个参数(ps:第一个参数是脚本的名称,它不应该作为参数进行解析)

shortopts:简写参数列表

longopts:长参数列表

返回值:

opts:分析出的(option, value)列表对。

args:不属于格式信息的剩余命令行参数列表。

源码分析

在Android生成OTA的build系统中,common.py文件中的ParseOptions函数就是用来解析输入参数的,我们来通过该函数的实现来分析一下getopt的使用。

函数源码如下:

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

其中,extra_option_handler可以理解为函数指针,它的功能也是解析opts的键值对。

extra_option_handler源码如下:

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

一般生成OAT全量包的参数argv如下:

代码如下: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']

首先,对参数进行分析,其中短参数包括:

-v,-p,-k,

经过解析后,生成的结果如下所示:

002pc.com从Python中的getopt函数使用详解分析来看,对Python中的getopt函数使用详解的结果。 代码如下: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']

更多:python 5种 statsPython中的getopt函数使用详解

https://www.002pc.comhttps://www.002pc.com/python/32.html

你可能感兴趣的Python,getopt,详解,函数,使用

No alive nodes found in your cluster

0踩

0 赞

python getopt_python 5种 statsPython中的getopt函数使用详解相关推荐

  1. python中getopt函数_Python中的getopt函数使用详解

    函数原型: getopt.getopt(args, shortopts, longopts=[]) 参数解释: args:args为需要解析的参数列表.一般使用sys.argv[1:],这样可以过滤掉 ...

  2. python中subplot是什么意思_python matplotlib中的subplot函数使用详解

    python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...

  3. python中mat函数_python matplotlib中的subplot函数使用详解

    python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...

  4. python explode_pandas dataframe 中的explode函数用法详解

    在使用 pandas 进行数据分析的过程中,我们常常会遇到将一行数据展开成多行的需求,多么希望能有一个类似于 hive sql 中的 explode 函数. 这个函数如下: Code # !/usr/ ...

  5. pythonsubplot_python matplotlib中的subplot函数使用详解

    python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...

  6. python的sort方法是哪种_python中的sort方法使用详解

    Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可 ...

  7. python获取键盘按键_Python中捕获键盘的方式详解

    python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN and even ...

  8. python decimal类型转化_python中的decimal类型转换实例详解

    [Python标准库]decimal--定点数和浮点数的数学运算 作用:使用定点数和浮点数的小数运算. Python 版本:2.4 及以后版本 decimal 模块实现了定点和浮点算术运算符,使用的是 ...

  9. python迭代器创建序列_Python 中迭代器与生成器实例详解

    Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的 ...

最新文章

  1. Linux下getopt_long函数的使用
  2. 【干货】大数据和人工智能.pdf
  3. docker 挂载目录_完美解决:Docker部署SpringBoot项目后图片无法访问和上传,3招搞定!...
  4. AI时代龙争虎战 什么是传统安企“护城河”?
  5. k8s v1.9.6 超详细搭建步骤
  6. 【算法】梯度消失与梯度爆炸
  7. 一文弄懂神经网络中的反向传播法——BackPropagation【转】
  8. java安全编码指南之:敏感类的拷贝
  9. python json是什么_python json详解
  10. 如何搭建基于C#和 Appium 的 Android自动测试环境
  11. Hive中时间格式的转换
  12. css中的伪类 之 first-child
  13. 集成maven和Spring boot的profile 专题
  14. Docker部署应用案例
  15. 电信悦meYMB0300-CW-卡刷-刷机固件
  16. 学习-Java循环while之求非负数之和
  17. 从自媒体人到服务商 职业信鸽主播的快手商业之路
  18. 基于ESP32环境监测控制和预警(微信小程序)
  19. 平台注册加入微信验证码机制。
  20. ubuntu 批量改名

热门文章

  1. 【Arthas】Arthas Command处理流程
  2. 【Flink】 Flink 源码之 SQL 执行流程
  3. 【scala】IDEA运行scala程序:Error:scalac: bad option: ‘-make:transitive‘
  4. 【elasticsearch】文档 CRUD 增删改查 以及 相关 参数
  5. 【git】LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
  6. json与对象的互相转换
  7. 05-java向Neo4j添加节点及其关系
  8. 60-330-000-使用-窗口TopN分析与实现
  9. 【java】静态代理 proxy
  10. Spring : ConfigurableBeanFactory 配置能力