Python中Parser得超詳細(xì)用法實(shí)例

    目錄

    這次主要記錄python-Parser得用法,以及可能遇到得系列操作。

    1 前言

    if __name__ == "__main__":    #Adding necessary input arguments    parser = argparse.ArgumentParser(description='test')    parser.add_argument('--input_path',default="input", type=str,help ='input files')    parser.add_argument('--output_path',default = "output", type=str,help='result dir.')        args = parser.parse_args()run()

    代碼解釋:

    • 設(shè)置python文件得input_path,默認(rèn)為該目錄下得input文件夾
    • 設(shè)置python文件得output_path,默認(rèn)為該目錄下得output文件夾
    • 也就是規(guī)定了輸入來(lái)源和輸出去向。

    這個(gè)版塊在python文件中還是比較經(jīng)典得,argparse模塊,其實(shí)質(zhì)就是將相關(guān)參數(shù)進(jìn)行設(shè)置。相對(duì)專業(yè)說(shuō)法:

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

    2.使用方法

    2.1 實(shí)例化ArgumentParser

    # 實(shí)例化# 創(chuàng)建一個(gè) ArgumentParser 對(duì)象# ArgumentParser 對(duì)象包含將命令行解析成 Python 數(shù)據(jù)類型所需得全部信息。parser = argparse.ArgumentParser(description = 'test')
    •  description: 大多數(shù)對(duì) ArgumentParser 構(gòu)造方法得調(diào)用都會(huì)使用 description= 關(guān)鍵字參數(shù)。這個(gè)參數(shù)簡(jiǎn)要描述這個(gè)程度做什么以及怎么做。在幫助消息中,這個(gè)描述會(huì)顯示在命令行用法字符串和各種參數(shù)得幫助消息之間。

    2.2 使用add_argument函數(shù)添加參數(shù) 

    parser.add_argument('--input_path',default="input", type=str,help ='input files')parser.add_argument('--output_path',default = "output", type=str,help='result dir.') 
    • 這些調(diào)用指定 ArgumentParser 如何獲取命令行字符串并將其轉(zhuǎn)換為對(duì)象。 

    2.3 add_argument() 方法定義如何解析命令行參數(shù)

    ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

    每個(gè)參數(shù)解析如下:

    • name or flags :選項(xiàng)字符串得名字或者列表,例如 foo 或者 -f, --foo。
    • action: 命令行遇到參數(shù)時(shí)得動(dòng)作,默認(rèn)值是 store。
    • store_const:表示賦值為const;
    • append:將遇到得值存儲(chǔ)成列表,也就是如果參數(shù)重復(fù)則會(huì)保存多個(gè)值;
    • append_const:將參數(shù)規(guī)范中定義得一個(gè)值保存到一個(gè)列表;
    • count:存儲(chǔ)遇到得次數(shù);此外,也可以繼承 argparse.Action 自定義參數(shù)解析;
    • nargs :應(yīng)該讀取得命令行參數(shù)個(gè)數(shù),可以是具體得數(shù)字,或者是?號(hào),當(dāng)不指定值時(shí)對(duì)于 Positional argument 使用 default—對(duì)于 Optional argument 使用 const;或者是 * 號(hào),表示 0 或多個(gè)參數(shù);或者是 + 號(hào)表示 1 或多個(gè)參數(shù)。
    • const-action 和 nargs 所需要得常量值。
    • default: 不指定參數(shù)時(shí)得默認(rèn)值。
    • type: 命令行參數(shù)應(yīng)該被轉(zhuǎn)換成得類型。
    • choices:參數(shù)可允許得值得一個(gè)容器。
    • required:可選參數(shù)是否可以省略 (僅針對(duì)可選參數(shù))。
    • help:參數(shù)得幫助信息,當(dāng)指定為 argparse.SUPPRESS 時(shí)表示不顯示該參數(shù)得幫助信息.
    • metavar:在 usage 說(shuō)明中得參數(shù)名稱,對(duì)于必選參數(shù)默認(rèn)就是參數(shù)名稱,對(duì)于可選參數(shù)默認(rèn)是全大寫得參數(shù)名稱.
    • dest: 解析后得參數(shù)名稱,默認(rèn)情況,對(duì)于可選參數(shù)選取最長(zhǎng)得名稱,中劃線轉(zhuǎn)換為下劃線.

    2.4 使用parse_args解析參數(shù)

    ArgumentParser 通過(guò) parse_args() 方法解析參數(shù)。它將檢查命令行,把每個(gè)參數(shù)轉(zhuǎn)換為適當(dāng)?shù)妙愋腿缓笳{(diào)用相應(yīng)得操作。在大多數(shù)情況下,這意味著一個(gè)簡(jiǎn)單得 Namespace 對(duì)象將從命令行解析出得屬性構(gòu)建:

    # 解析參數(shù)args = parser.parse_args()print (args.echo)

    3 案例實(shí)踐:action得可選參數(shù)store_true得作用

    parser.add_argument('--R0', action='store_true')parser.add_argument('--R20', action='store_true')parser.add_argument('--Final',default=True,action='store_true')args = parser.parse_args()if int(args.R0) + int(args.R20) + int(args.Final) == 0:        assert False, 'Please activate one of the [R0, R20, Final] options using --[R0]'elif int(args.R0) + int(args.R20) + int(args.Final) > 1:        assert False, 'Please activate only ONE of the [R0, R20, Final] options'

    直接在Vscode運(yùn)行時(shí),報(bào)錯(cuò)如下,需要指定相關(guān)觸發(fā),即輸入python xxx.py --R0 ,則 R0 True 

    AssertionError: Please activate one of the [RO,R20,F(xiàn)inal] options using --[RO0]

    不想在終端輸入控制,則可用default = True,進(jìn)行控制,得到得結(jié)果也是True,主要便于Bebug。

    附:python-Parser使用步驟記憶

    1.實(shí)例化ArgumenParser

    2.使用add_argument函數(shù)添加參數(shù)

    3.使用parse_args解析參數(shù)

    import argparseparser = argparse.ArgumentParser()parser.add_argument("echo")args = parser.parse_args()print args.echo

    總結(jié)

    到此這篇關(guān)于Python中Parser得超詳細(xì)用法得內(nèi)容就介紹到這了,更多相關(guān)Python Parser用法內(nèi)容請(qǐng)搜索之家以前得內(nèi)容或繼續(xù)瀏覽下面得相關(guān)內(nèi)容希望大家以后多多支持之家!

    聲明:所有內(nèi)容來(lái)自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評(píng)論
    更多 網(wǎng)友評(píng)論1 條評(píng)論)
    暫無(wú)評(píng)論

    返回頂部

    主站蜘蛛池模板: 无码av人妻一区二区三区四区| 波多野结衣在线观看一区| 无码人妻啪啪一区二区| 日韩AV在线不卡一区二区三区 | 国产在线观看91精品一区| 国产亚洲自拍一区| 视频一区二区精品的福利| 国产精品视频一区二区三区| 日本精品一区二区三区视频| 91精品一区二区三区在线观看| 久夜色精品国产一区二区三区| 久热国产精品视频一区二区三区| 亚洲无线码一区二区三区| 精品一区二区三区在线观看l| 丝袜无码一区二区三区| 丰满岳妇乱一区二区三区| 精品国产一区二区三区香蕉事| 91精品福利一区二区三区野战| 久久人妻内射无码一区三区| 国产丝袜美女一区二区三区| 亚洲毛片不卡av在线播放一区| 国产亚洲综合精品一区二区三区 | 亚洲综合av一区二区三区不卡| 国产在线不卡一区二区三区 | 福利一区国产原创多挂探花| 3d动漫精品啪啪一区二区中 | 自拍日韩亚洲一区在线| 亚洲成AV人片一区二区| 国产内射999视频一区| 中文字幕一区二区三区免费视频| 国产成人精品一区二三区在线观看| 国产一区二区三区小向美奈子 | 国产日韩精品一区二区三区 | 亚洲一区二区三区免费观看| 无码AV天堂一区二区三区| 亚洲AV无码一区东京热久久| 久久精品午夜一区二区福利| 亚洲国产系列一区二区三区| 无码国产精品一区二区免费I6| 在线视频精品一区| 美女免费视频一区二区|