您的位置:首頁 > 教程 > python > python中argparse模塊基礎及使用步驟

python中argparse模塊基礎及使用步驟

2022-06-18 11:51:49 來源:易采站長站 作者:

python中argparse模塊基礎及使用步驟

目錄
argparse模塊用法一、 概念二、 基礎1、 使用步驟1.1 總步驟1.2 創建對象1.3 添加參數1.4 解析參數三、 使用案例

Czn站長之家-易采站長站-Easck.Com

argparse模塊用法

Czn站長之家-易采站長站-Easck.Com

一、>

argsparse是python的命令行解析的標準模塊,內置于python,不需要安裝。這個庫可以讓我們直接在命令行中就可以向程序中傳入參數并讓程序運行。Czn站長之家-易采站長站-Easck.Com

官方文檔的位置:【https://docs.python.org/zh-cn/3/library/argparse.html】Czn站長之家-易采站長站-Easck.Com

在這里我們利用git來演示命令行運行Czn站長之家-易采站長站-Easck.Com

git -h
git -version 
git show

Czn站長之家-易采站長站-Easck.Com

二、>

Czn站長之家-易采站長站-Easck.Com

1、>

Czn站長之家-易采站長站-Easck.Com

1.1>
1.導包:
import argparse
2.創建對象:
parser = argparse.ArgumentParser()
3.添加參數:
parser.add_argument()
4.解析參數:
parser.parse_args()

Czn站長之家-易采站長站-Easck.Com

1.2>
parser = ArgumentParser(prog=None, usage=None,description=None, epilog=None, parents=[],formatter_class=argparse.HelpFormatter, prefix_chars='-',fromfile_prefix_chars=None, argument_default=None,conflict_handler='error', add_help=True)

參數說明:Czn站長之家-易采站長站-Easck.Com

    prog:程序的名字,默認為sys.argv[0],用來在help信息中描述程序的名稱usag:描述程序用途的字符串description:help信息前的文字epilog:help信息之后的信息add_help:是否添加幫助信息prefix_chars:參數前綴,默認為-fromfile_prefix_chars:前綴字符,放在文件名之前argument_default:參數的全局默認值conflict_hander:對沖突的處理方式,默認為返回錯誤“error”。還有“resolve”,智能解決沖突。當用戶給程序添加了兩個一樣的命令參數時,“error”就直接報錯,提醒用戶。而“resolve”則會去掉第一次出現的命令參數重復的部分或者全部(可能是短命令沖突或者全都沖突)

Czn站長之家-易采站長站-Easck.Com

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

參數說明:Czn站長之家-易采站長站-Easck.Com

    name or flags:參數有兩種,可選參數和位置參數。parse_args()運行時,會用-來認證可選參數,剩下的即為位置參數。位置參數必選,可選參數可選
    # 可選參數
    parser.add_argument("-f", "--foo")
    # 位置參數
    parser.add_argument("bar")  # 位置參數在運行時一定要輸入
      action:動作,argparse內置6種動作可以在解析到一個參數時進行觸發store:保存參數值,可能會先將參數值轉換成另一個數據類型。默認動作為這個store_const:保存一個被定義為參數規格一部分的值,而不是一個來自參數解析而來的值。這通常用于實現非布爾值的命令行標記stroe_true/store_false:保存相應的布爾值,這兩個動作被用于實現布爾開關append:將值保存到一個列表中。若參數重復出現,則保存多個值append_const:將一個定義在參數規格中的值保存到一個列表中version:打印關于程序的版本信息,然后退出
      parse.add_argument('--version',action = 'version',version = '%(prog)s2.0')
        nargs:參數的數量值可以為整數,*(任意多個),+(一個或更多)首先從命令行獲取參數,若沒有則從const獲得,然后從default獲得dest:參數值就保存為parse_args()返回的命名空間對象中為該dest參數值的一個屬性。如果提供dest="a",那么可以通過args.a訪問該參數default:設置參數的默認值type:把從命令行輸入的結果轉成設置的類型choice:允許的參數值requires:是否必選desk:可作為參數名help:參數命令的介紹

        參數的幾種寫法:Czn站長之家-易采站長站-Easck.Com

        python py.py -i 1  # 使用空格分開
        python py.py --integer=1  # 長選項使用等號分開
        python py.py -i1  # 短選項可以寫一起

        Czn站長之家-易采站長站-Easck.Com

        1.4>
        args = parser.parse_args()  # 括號里面可以傳入命令行的參數
        args_ = parser.parse_args("-i=1".split("="))

        Czn站長之家-易采站長站-Easck.Com

        三、>

        我們可以創建一個模板:Czn站長之家-易采站長站-Easck.Com

        #!/usr/bin/env python
        # -*- coding: UTF-8 -*-
        __author__ = "A.L.Kun"
        __file__ = "demo01.py"
        __time__ = "2022/6/16 17:12"
        __email__ = "liu.zhong.kun@foxmail.com"
        from typing import Callable
        from functools import wraps
        import sys, argparse
        def terminal(param: bool = False):  # 判斷是否要使用命令行參數
            def get_params(fun: Callable):
                if param:
                    parser = argparse.ArgumentParser(description="help document")
                    "---------------------------------------------------------------"
        			# 如果需要從命令行傳入參數時,就在這里添加
                    "---------------------------------------------------------------"
                    args = parser.parse_args()
                else:
                    args = None
                @wraps(fun)
                def inner():
                    ret = fun(args)  # 可能在傳參數是還要進行其他的初始化操作
                    return ret
                return inner
            return get_params
        @terminal()  # 使用裝飾器
        def main(args): 
            print(args)
        if __name__ == "__main__":
            main()
            sys.exit(0)

        使用案例,創建一個程序,可以連接郵箱的SMTP服務Czn站長之家-易采站長站-Easck.Com

        #!/usr/bin/env python
        # -*- coding: UTF-8 -*-
        __author__ = "A.L.Kun"
        __file__ = "demo01.py"
        __time__ = "2022/6/16 17:12"
        __email__ = "liu.zhong.kun@foxmail.com"
        from smtplib import SMTP
        from typing import Callable
        from functools import wraps
        import sys, argparse
        def terminal(param: bool = False):
            def get_params(fun: Callable):
                if param:
                    parser = argparse.ArgumentParser(description="help document")
                    "---------------------------------------------------------------"
                    parser.add_argument('--version', "-v", action='version', version='%(prog)s 2.0')
                    parser.add_argument("-u", "--username", type=str, help="Enter the SMTP server account", required=True)
                    parser.add_argument("-p", "--password", type=str, help="Enter the SMTP server password", required=True)
                    "---------------------------------------------------------------"
                    args = parser.parse_args()
                else:
                    args = None
                @wraps(fun)
                def inner():
                    ret = fun(args)
                    return ret
                return inner
            return get_params
        @terminal(True)
        def main(args):
            smtp = SMTP('smtp.QQ.com')
            smtp.login(args.username, args.password)
            smtp.quit()
            smtp.close()
        if __name__ == "__main__":
            main()
            sys.exit(0)

        到此這篇關于python中argparse模塊的文章就介紹到這了,更多相關python argparse模塊內容請搜索易采站長站以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持易采站長站!Czn站長之家-易采站長站-Easck.Com

        如有侵權,請聯系QQ:279390809 電話:15144810328

相關文章

色七七影院_香港三级台湾三级在线播放_男人放进女人阳道猛进猛出