亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python 利用argparse模塊實現(xiàn)腳本命令行參數解析

 更新時間:2020年12月28日 08:33:20   作者:授客  
這篇文章主要介紹了Python 利用argparse模塊實現(xiàn)腳本命令行參數解析,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

study.py內容如下

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
__author__ = 'shouke'
 
import argparse
 
def argparseFunc():
 '''
 基于argparse模塊實現(xiàn)命令參數解析功能
 執(zhí)行示例:
  python study.py -i 172.19.7.236 -p 8080 -a -r
  python study.py --ip 172.19.7.236 --port 7077 --auth -w -v True
 '''
 
 parser = argparse.ArgumentParser(description="study.py usage help document")
 # 添加不帶默認值的可解析參數
 parser.add_argument("-i", "--ip", help="ip addr") #注意: -h、--help為內置參數,不可用
 parser.add_argument("-p", "--port",help="host port")
 
 # 添加帶默認值的可解析參數(# action = store_true 表示是如果使用了這個參數,則值參數值設置為True # 更多action配置可參考源碼
 # 需要注意的是,不能為帶默認值參數指定參數值,會報錯,該參數值會被當作不識別的參數
 parser.add_argument("-a", "--auth", help="if auth need", action="store_true")
 
 
 # 添加互斥參數(比如 例中的-r和-w 同時只能用一個)
 exclusive_group = parser.add_mutually_exclusive_group()
 exclusive_group.add_argument("-r","--read", help="read enabled" , action="store_true")
 exclusive_group.add_argument("-w","--write", help="write enabled", action="store_true")
 
 # 添加參數時不設置設置參數說明
 parser.add_argument('-v') # show verbose
 
 # 添加參數時不設置參數全名
 parser.add_argument('-V', help="version")
 
 ARGS = parser.parse_args() # 獲取命令行參數
 print('ARGS:', ARGS)
 
 # 獲取某個參數值
 if ARGS.ip: # 注意,這里的參數名,必須使用參數全稱
 print("host addr is: %s" % ARGS.ip)
 
 if ARGS.port:
 print("host port is: : %s" % ARGS.port)
 
 if ARGS.auth:
 print("auth need: : %s" % ARGS.auth)
 
 if ARGS.read:
 print("read enabled: %s" % ARGS.read)
 
 if ARGS.write:
 print("write enabled: %s" % ARGS.write)
 
argparseFunc()

運行測試

python study.py -i 172.19.7.236 -p 8080 -a -r
python study.py --ip 172.19.7.236 --port 7077 --auth -w -v True

結果如下

python study.py -i127.0.0.1 # 注意,參數和參數值之間可以沒有空格

結果如下

python study.py -notExists 1

結果如下

如上,以上代碼實現(xiàn)是針對單個模塊腳本,如果要在多個模塊中使用咋辦?解決方法為封裝為類,具體參見“代碼實踐2”

#代碼實踐2

argument_parser.py
 
#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
 
'''
@Author : shouke
'''
 
 
import argparse
 
class ArgParser(object):
 '''
  參數解析器
 '''
 
 
 def __init__(self, none_exclusive_arguments, exclusive_arguments, description=''):
  self.parser = argparse.ArgumentParser(description=description)
 
  self.add_none_exclusive_arguments(none_exclusive_arguments)
  self.add_exclusive_arguments(exclusive_arguments)
 
 def add_none_exclusive_arguments(self, options:list):
  '''
  添加常規(guī)選項(非互斥選項)
  :param options 格式為list類型,形如
  [
   '"-a", "--all", help="do not ignore entries starting with ."',
   '"-b", "--block", help="scale sizes by SIZE before printing them"',
   '"-C", "--color", help="colorize the output; WHEN can be 'never', 'auto'"',
   '"-flag", help="make flag", action="store_true"', # action="store_true" 表示如果不設置該選項的值,則默認值為true,類似的action="store_false" 表示默認值為false
  ]
  其中,每個list元素為argparse.ArgumentParserlei add_argument類函數實參的字符串表示,add_argument函數定義add_argument(self, *args,**kwargs)
  '''
 
  for option in options:
   eval('self.parser.add_argument(%s)' % option)
 
 
 def add_exclusive_arguments(self, options:list):
  '''
  添加互斥選項
  :param options 格式為list,形如以下
  [
   ('"-r","--read",help="Read Action",action="store_true"',
   '"-w","--write",help="Write Action",action="store_true"')
  ]
 
  '''
  for option_tuple in options:
   exptypegroup = self.parser.add_mutually_exclusive_group()
   for item in option_tuple:
    eval('exptypegroup.add_argument(%s)' % item)
 
 
 @property
 def args(self):
  return self.parser.parse_args()

在xxx.py中引用(注意:為了讓參數解析器起到應起的作用,建議在腳本最上方構造參數解析器對象)

study.py內容如下

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
__author__ = 'shouke'
 
from argument_parser import ArgParser
 
none_exclusive_arguments = [
 '"-ip", help="自動化測試服務平臺地址"',
 '"-projectId", help="自動化測試項目id"',
 '"-runEnv", help="自動化測試項目運行環(huán)境"',
 '"-logLevel", help="日志級別"',
 '"-masterHost", help="master服務地址"',
 '"-masterPort", help="master服務端口"'
]
 
exclusive_arguments = [
 
 ('"-r", "--read", help="Read Action",action="store_true"',
 '"-w", "--write", help="Write Action",action="store_true"')
]
 
 
args = ArgParser(none_exclusive_arguments, exclusive_arguments).args
 
print(args)
print(args.ip)
print(args.read)

運行測試

python study.py -i 127.0.0.1 -r

運行結果如下

到此這篇關于Python 利用argparse模塊實現(xiàn)腳本命令行參數解析的文章就介紹到這了,更多相關Python 實現(xiàn)腳本命令行參數解析內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Pyqt5 實現(xiàn)跳轉界面并關閉當前界面的方法

    Pyqt5 實現(xiàn)跳轉界面并關閉當前界面的方法

    今天小編就為大家分享一篇Pyqt5 實現(xiàn)跳轉界面并關閉當前界面的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • IntelliJ IDEA安裝運行python插件方法

    IntelliJ IDEA安裝運行python插件方法

    在本篇文章里我們給大家分享關于IntelliJ IDEA安裝運行python插件方法,對此有需求的讀者們可以跟著步驟學習下
    2018-12-12
  • Python英文文章詞頻統(tǒng)計(14份劍橋真題詞頻統(tǒng)計)

    Python英文文章詞頻統(tǒng)計(14份劍橋真題詞頻統(tǒng)計)

    這篇文章主要介紹了Python英文文章詞頻統(tǒng)計(14份劍橋真題詞頻統(tǒng)計),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Python內存映射文件讀寫方式

    Python內存映射文件讀寫方式

    這篇文章主要介紹了Python內存映射文件讀寫方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python matplotlib實現(xiàn)將圖例放在圖外

    python matplotlib實現(xiàn)將圖例放在圖外

    這篇文章主要介紹了python matplotlib實現(xiàn)將圖例放在圖外,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python實現(xiàn)簡單socket通信的方法

    python實現(xiàn)簡單socket通信的方法

    這篇文章主要介紹了python實現(xiàn)簡單socket通信的方法,結合實例形式分析了socket通信服務端與客戶端的具體實現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • 使用python制作九九乘法表的四種方法小結

    使用python制作九九乘法表的四種方法小結

    九九乘法表是初學者學習編程的必要練手題目之一,因此各種語言都有對應的實現(xiàn)方式,而 Python 也不例外,在 Python 中,我們可以使用多種方式來生成一個簡單的九九乘法表,本文給大家總結了使用python制作九九乘法表的四種方法,需要的朋友可以參考下
    2024-03-03
  • 如何使用virtualenv管理python環(huán)境

    如何使用virtualenv管理python環(huán)境

    這篇文章主要介紹了如何使用virtualenv管理python環(huán)境,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Python?Flask實現(xiàn)圖片上傳與下載的示例詳解

    Python?Flask實現(xiàn)圖片上傳與下載的示例詳解

    這篇文章主要為大家詳細介紹了如何利用Python和Flask實現(xiàn)圖片上傳與下載(支持漂亮的拖拽上傳),文中示例代碼講解詳細,感興趣的可以了解一下
    2022-05-05
  • pandas中聚合函數agg的具體用法

    pandas中聚合函數agg的具體用法

    Pandas中的的agg()函數為aggregate的縮寫.總數、合計、聚合的意思.是一個功能非常強大的函數.在Pandas中可以利用agg()對Series、DataFrame以及groupby()后的結果進行聚合操作,下面這篇文章主要給大家介紹了關于pandas中聚合函數agg的具體用法,需要的朋友可以參考下
    2022-07-07

最新評論