欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python自定義命令行參數(shù)選項(xiàng)和解析器

 更新時(shí)間:2023年07月06日 10:45:10   作者:信橙則靈  
這篇文章主要介紹了Python自定義命令行參數(shù)選項(xiàng)和解析器,本文主要使用的方法為argparse.ArgumentParser(),此模塊可以讓人輕松編寫用戶友好的命令行接口,程序定義它需要的參數(shù),需要的朋友可以參考下

Python自定義命令行參數(shù)

使用到的方法為 argparse.ArgumentParser() ,此模塊有中文文檔,建議鏈接 到官方中文文檔中查看。

argparse.ArgumentParser()

此模塊可以讓人輕松編寫用戶友好的命令行接口。程序定義它需要的參數(shù),然后 argparse 將弄清如何從 sys.argv 解析出那些參數(shù)。 argparse 模塊還會(huì)自動(dòng)生成幫助和使用手冊(cè)「常見的-h」,并在用戶給程序傳入無效參數(shù)時(shí)報(bào)出錯(cuò)誤信息。

使用流程

1、創(chuàng)建一個(gè)解析器:

第一步:創(chuàng)建一個(gè) ArgumentParser 對(duì)象:

parser = argparse.ArgumentParser(description='Process some integers.')

ArgumentParser 對(duì)象包含將命令行解析成 Python 數(shù)據(jù)類型所需的全部信息。 備注:想知道具體信息可點(diǎn)擊類,查看其中的源碼

2、添加參數(shù):

ArgumentParser 對(duì)象添加參數(shù)的方法為:add_argument()

parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                  	help='sum the integers (default: find the max)')     

調(diào)用 parse_args() 將返回一個(gè)具有integers和 accumulate 屬性的對(duì)象,integers 屬性將是一個(gè)包含一個(gè)或多個(gè)整數(shù)的列表。而accumulate屬性,當(dāng)傳遞的參數(shù)為–sum時(shí),則是求和「sum() 函數(shù)」,當(dāng)不傳參時(shí),默認(rèn)求最大值「max()函數(shù)」

3、解析參數(shù):

ArgumentParser 對(duì)象通過 parse_args() 方法解析參數(shù),它將檢查命令行,把每個(gè)參數(shù)轉(zhuǎn)換為適當(dāng)?shù)念愋腿缓笳{(diào)用相應(yīng)的操作。

parser.parse_args([’–sum’, ‘7’, ‘-1’, ‘42’]) 返回為:Namespace(accumulate=, integers=[7, -1, 42])

上面是官網(wǎng)的例子,其實(shí)簡(jiǎn)而言之就四個(gè)步驟:

1、導(dǎo)入模塊

import argparse

2、創(chuàng)建對(duì)象

 parser = argparse.ArgumentParser(description='描述',  usage = "傳參提示")

3、添加對(duì)象屬性

parser.add_argument()

4、解析參數(shù)

parser.parse_args()   或者  parser.parse_known_args() 

下面的內(nèi)容會(huì)講到這兩者的區(qū)別

至于具體的參數(shù)怎么使用,建議參考官網(wǎng),本人還未參透所有參數(shù),(。?_?。)?I’m sorry~,不過已夠工作使用,待日后慢慢補(bǔ)充。

工作中的使用:

先上代碼,下面有具體的代碼解析,研究透這些,就夠日?;臼褂昧?/strong>

import argparse
parser = argparse.ArgumentParser()
def arg_parser():
    parser = argparse.ArgumentParser(
        usage="usage: %(prog)s [參數(shù)名] [參數(shù)值]"
    )
    parser.add_argument(
        "--welcome", help="是否展示歡迎詞", action='store_true'
    )
    parser.add_argument(
        "--login", help="是否登錄", action='store_true', default=True
    )
    parser.add_argument(
        "--login_token", help="登錄參數(shù)", default=None, type=str
    )
    model_name = parser.add_argument_group("Model", "使用什么模型處理數(shù)據(jù)?")
    model_name.add_argument(
        "--knn", help="使用KNN方法",
        type=str, default=None
    )
    model_name.add_argument(
        "--tree", help="使用決策樹方法",
        type=str, default=None
    )
    return parser
def argument_parser() -> argparse.ArgumentParser:
    """
    Construct an return an `argparse.ArgumentParser` instance
    """
    return arg_parser()
if __name__ == '__main__':
    parser = argument_parser()
    options, argv_rest = parser.parse_known_args()
    if options.knn is not None:
        argv_rest = ["-knn", options.knn] + argv_rest
    if options.login_token is not None:
        print('login_token參數(shù)為:', options.login_token)
    options = options
    arguments = argv_rest
    print('options為:', options, '\n', "arguments為:", arguments)

第7行:定義parser,參數(shù)中的usage是介紹使用參數(shù)的格式,用于用戶在運(yùn)行 -h 時(shí)展示提示信息。如下圖所示:

在這里插入圖片描述

第10、14行:給parser添加屬性,重點(diǎn)介紹 action 這個(gè)參數(shù)

相同點(diǎn):

  第10行和第14行均是action = ‘store_true’,此參數(shù)用于布爾類型的參數(shù)  

區(qū)別:

  第10行中,當(dāng)命令行中觸發(fā)welcome參數(shù)時(shí),返回為True,沒有觸發(fā)的時(shí)候返回False。   第14行中,當(dāng)命令行中觸發(fā)login參數(shù)時(shí),返回為True,沒有觸發(fā)的時(shí)候取默認(rèn)值返回仍為True。也就是說,傳不傳login參數(shù),返回的都是True,這就是default參數(shù)的作用。

第16行

新增login_token參數(shù),傳入登錄參數(shù)token,限制token類型為str,默認(rèn)為None

提醒一句,這個(gè)type不要和action結(jié)合使用,action返回的只有布爾類型,注意參數(shù)名字大小寫是不同的。

第20行:        add_argument_group(title=None, description=None)方法:

官方解釋:

      add_argument_group() 方法返回一個(gè)具有 add_argument() 方法的參數(shù)分組對(duì)象,這與常規(guī)的ArgumentParser一樣。當(dāng)一個(gè)參數(shù)被加入分組時(shí),解析器會(huì)將它視為一個(gè)正常的參數(shù),但是會(huì)在不同的幫助消息分組中顯示該參數(shù)。 add_argument_group()方法接受 title 和 description 參數(shù),它們可被用來定制顯示內(nèi)容

是不是有點(diǎn)迷糊, 其實(shí)就是自定義一個(gè)參數(shù)分組,如下圖所示:

在這里插入圖片描述

第41行:       parser.parse_known_args() 和 parser.parse_args() 的區(qū)別            

options用來接收命令行中已定義了參數(shù)的信息             

argv_rest 接收在命令中未被定義的信息

作用:有時(shí)一個(gè)腳本可能只解析部分命令行參數(shù),而將其余的參數(shù)繼續(xù)傳遞給另一個(gè)腳本或程序,它的作用方式很類似 parse_args() 但區(qū)別在于當(dāng)存在額外參數(shù)時(shí)它不會(huì)產(chǎn)生錯(cuò)誤,額外的參數(shù)被argv_rest給接收了。

使用:好比在PyQt中,像定義style這種,就可將參數(shù)賦給argv_rest,然后讓系統(tǒng)「QApplication」去處理此參數(shù)

第42行

假如當(dāng)命令行中的參數(shù)中有knn這個(gè)參數(shù),而這個(gè)參數(shù)我想交給系統(tǒng)去處理,所以我就把它添加到argv_rest之中,將這種參數(shù),統(tǒng)一交給系統(tǒng)處理

第45行

傳入的參數(shù)中存在login_token,對(duì)login_token進(jìn)行單獨(dú)處理。

到此這篇關(guān)于Python自定義命令行參數(shù)選項(xiàng)和解析器的文章就介紹到這了,更多相關(guān)Python自定義命令行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于隨機(jī)梯度下降的矩陣分解推薦算法(python)

    基于隨機(jī)梯度下降的矩陣分解推薦算法(python)

    這篇文章主要為大家詳細(xì)介紹了基于隨機(jī)梯度下降的矩陣分解推薦算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • opencv resize圖片為正方形尺寸的實(shí)現(xiàn)方法

    opencv resize圖片為正方形尺寸的實(shí)現(xiàn)方法

    這篇文章主要介紹了opencv resize圖片為正方形尺寸的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python中字典的淺拷貝與深拷貝用法實(shí)例分析

    Python中字典的淺拷貝與深拷貝用法實(shí)例分析

    這篇文章主要介紹了Python中字典的淺拷貝與深拷貝用法,結(jié)合實(shí)例形式分析了字典淺拷貝與深拷貝的原理、區(qū)別與使用方法,需要的朋友可以參考下
    2018-01-01
  • python實(shí)現(xiàn)發(fā)送郵件功能

    python實(shí)現(xiàn)發(fā)送郵件功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)發(fā)送郵件功能,使用的模塊是smtplib、MIMEText,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 基于python goto的正確用法說明

    基于python goto的正確用法說明

    這篇文章主要介紹了基于python goto的正確用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 解決Numpy中sum函數(shù)求和結(jié)果維度的問題

    解決Numpy中sum函數(shù)求和結(jié)果維度的問題

    今天小編大家分享一篇解決Numpy中sum函數(shù)求和結(jié)果維度的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python畫圖常見不同圖片格式保存方式

    python畫圖常見不同圖片格式保存方式

    這篇文章主要介紹了python畫圖常見不同圖片格式保存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python 多核并行計(jì)算的示例代碼

    Python 多核并行計(jì)算的示例代碼

    本篇文章主要介紹了Python 多核并行計(jì)算的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Python %r和%s區(qū)別代碼實(shí)例解析

    Python %r和%s區(qū)別代碼實(shí)例解析

    這篇文章主要介紹了Python %r和%s區(qū)別代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 如何在Win10系統(tǒng)使用Python3連接Hive

    如何在Win10系統(tǒng)使用Python3連接Hive

    這篇文章主要介紹了如何在Win10系統(tǒng)使用Python3連接Hive,幫助大家更好的利用python讀取數(shù)據(jù),進(jìn)行探索、分析和挖掘工作。感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論