最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的getopt函數(shù)使用詳解

 更新時間:2015年07月28日 12:08:20   作者:低調(diào)小一  
這篇文章主要介紹了Python中的getopt函數(shù)使用詳解,是Python進階學習中的重要知識,需要的朋友可以參考下

函數(shù)原型:

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


參數(shù)解釋:

  •     args:args為需要解析的參數(shù)列表。一般使用sys.argv[1:],這樣可以過濾掉第一個參數(shù)(ps:第一個參數(shù)是腳本的名稱,它不應(yīng)該作為參數(shù)進行解析)
  •     shortopts:簡寫參數(shù)列表
  •     longopts:長參數(shù)列表

返回值:

  •     opts:分析出的(option, value)列表對。
  •     args:不屬于格式信息的剩余命令行參數(shù)列表。

源碼分析

在Android生成OTA的build系統(tǒng)中,common.py文件中的ParseOptions函數(shù)就是用來解析輸入?yún)?shù)的,我們來通過該函數(shù)的實現(xiàn)來分析一下getopt的使用。

函數(shù)源碼如下:

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可以理解為函數(shù)指針,它的功能也是解析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全量包的參數(shù)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']


首先,對參數(shù)進行分析,其中短參數(shù)包括:
-v,-p,-k,


經(jīng)過解析后,生成的結(jié)果如下所示:

復制代碼 代碼如下:
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']

相關(guān)文章

  • python高手之路python處理excel文件(方法匯總)

    python高手之路python處理excel文件(方法匯總)

    用python來自動生成excel數(shù)據(jù)文件。python處理excel文件主要是第三方模塊庫xlrd、xlwt、xluntils和pyExcelerator,除此之外,python處理excel還可以用win32com和openpyxl模塊
    2016-01-01
  • Python通過cv2讀取多個USB攝像頭

    Python通過cv2讀取多個USB攝像頭

    這篇文章主要為大家詳細介紹了Python通過cv2讀取多個USB攝像頭,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 用Python編寫簡單的gRPC服務(wù)的詳細過程

    用Python編寫簡單的gRPC服務(wù)的詳細過程

    gRPC 是可以在任何環(huán)境中運行的現(xiàn)代開源高性能 RPC 框架。接下來通過本文給大家介紹用Python編寫簡單的gRPC服務(wù)的詳細過程,感興趣的朋友一起看看吧
    2021-07-07
  • Python Django view 兩種return的實現(xiàn)方式

    Python Django view 兩種return的實現(xiàn)方式

    這篇文章主要介紹了Python Django view 兩種return的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 基于OpenCV4.2實現(xiàn)單目標跟蹤

    基于OpenCV4.2實現(xiàn)單目標跟蹤

    這篇文章主要介紹了如何和何時使用OpenCV 4.2中可用的8種不同的跟蹤器- BOOSTING, MIL, KCF, TLD, MEDIANFLOW, GOTURN, MOSSE和CSRT,并用他們實現(xiàn)單目標跟蹤,需要的可以參考一下
    2022-03-03
  • Python利用tkinter和socket實現(xiàn)端口掃描

    Python利用tkinter和socket實現(xiàn)端口掃描

    這篇文章主要為大家詳細介紹了Python如何利用tkinter和socket實現(xiàn)端口掃描功能,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-12-12
  • Python提取頻域特征知識點淺析

    Python提取頻域特征知識點淺析

    在本文里我們給大家分享了關(guān)于Python提取頻域特征的相關(guān)知識點以及基礎(chǔ)內(nèi)容,需要的朋友們跟著學習下。
    2019-03-03
  • Python實現(xiàn)獲取彈幕的兩種方式分享

    Python實現(xiàn)獲取彈幕的兩種方式分享

    彈幕可以給觀眾一種“實時互動”的錯覺,在相同時刻發(fā)送的彈幕基本上也具有相同的主題,在參與評論時就會有與其他觀眾同時評論的錯覺。本文為大家總結(jié)了兩個Python獲取彈幕的方法,希望對大家有所幫助
    2023-03-03
  • python 根據(jù)excel中顏色區(qū)分讀取的操作

    python 根據(jù)excel中顏色區(qū)分讀取的操作

    這篇文章主要介紹了python 根據(jù)excel中顏色區(qū)分讀取的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python2和3字符編碼的區(qū)別知識點整理

    Python2和3字符編碼的區(qū)別知識點整理

    在本篇文章中小編給各位分享的是關(guān)于Python2和3字符編碼的區(qū)別知識點,有需要的朋友們可以學習下。
    2019-08-08

最新評論

张掖市| 辛集市| 汉川市| 阿坝| 呼玛县| 沁阳市| 肥东县| 淄博市| 渝北区| 辉县市| 林口县| 同心县| 清原| 永登县| 盐津县| 措美县| 丹棱县| 沂源县| 扎囊县| 泰州市| 盐津县| 霍林郭勒市| 昭通市| 当阳市| 汤原县| 忻城县| 吐鲁番市| 宁南县| 木里| 竹山县| 大竹县| 伊金霍洛旗| 镇康县| 台北县| 桐庐县| 凯里市| 岳西县| 即墨市| 井冈山市| 沅陵县| 郸城县|