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

python中argparse模塊基礎(chǔ)及使用步驟

 更新時間:2022年06月18日 10:34:30   作者:A-L-Kun  
argsparse是python的命令行解析的標準模塊,內(nèi)置于python,不需要安裝。這個庫可以讓我們直接在命令行中就可以向程序中傳入?yún)?shù)并讓程序運行,接下來通過本文給大家介紹python argparse模塊的相關(guān)知識,感興趣的朋友一起看看吧

argparse模塊用法

一、 概念

argsparse是python的命令行解析的標準模塊,內(nèi)置于python,不需要安裝。這個庫可以讓我們直接在命令行中就可以向程序中傳入?yún)?shù)并讓程序運行。

官方文檔的位置:【https://docs.python.org/zh-cn/3/library/argparse.html

在這里我們利用git來演示命令行運行

git -h
git -version 
git show

二、 基礎(chǔ)

1、 使用步驟

1.1 總步驟

1.導(dǎo)包:
import argparse
2.創(chuàng)建對象:
parser = argparse.ArgumentParser()
3.添加參數(shù):
parser.add_argument()
4.解析參數(shù):
parser.parse_args()

1.2 創(chuàng)建對象

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)

參數(shù)說明:

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

1.3 添加參數(shù)

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

參數(shù)說明:

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

參數(shù)的幾種寫法:

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

1.4 解析參數(shù)

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

三、 使用案例

我們可以創(chuàng)建一個模板:

#!/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):  # 判斷是否要使用命令行參數(shù)
    def get_params(fun: Callable):
        if param:
            parser = argparse.ArgumentParser(description="help document")
            "---------------------------------------------------------------"
			# 如果需要從命令行傳入?yún)?shù)時,就在這里添加
            "---------------------------------------------------------------"
            args = parser.parse_args()
        else:
            args = None
        @wraps(fun)
        def inner():
            ret = fun(args)  # 可能在傳參數(shù)是還要進行其他的初始化操作
            return ret
        return inner
    return get_params
@terminal()  # 使用裝飾器
def main(args): 
    print(args)
if __name__ == "__main__":
    main()
    sys.exit(0)

使用案例,創(chuàng)建一個程序,可以連接郵箱的SMTP服務(wù)

#!/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)

到此這篇關(guān)于python中argparse模塊的文章就介紹到這了,更多相關(guān)python argparse模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?Numpy庫的超詳細教程

    Python?Numpy庫的超詳細教程

    Numpy庫是Python中的一個科學計算庫,本文主要介紹了ndarray的基本操作、?ndarray運算等各種Numpy庫的超詳細教程,需要的朋友可以參考下
    2022-04-04
  • python 中的@property的用法詳解

    python 中的@property的用法詳解

    這篇文章主要介紹了python @property的用法,簡單地說就是一個類里面的方法一旦被@property裝飾,就可以像調(diào)用屬性一樣地去調(diào)用這個方法,它能夠簡化調(diào)用者獲取數(shù)據(jù)的流程,感興趣的朋友跟隨小編一起看看吧
    2022-06-06
  • Python函數(shù)參數(shù)類型及排序原理總結(jié)

    Python函數(shù)參數(shù)類型及排序原理總結(jié)

    這篇文章主要介紹了Python函數(shù)參數(shù)類型及排序原理總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Jupyter notebook命令和編輯模式常用快捷鍵匯總

    Jupyter notebook命令和編輯模式常用快捷鍵匯總

    這篇文章主要介紹了Jupyter notebook命令和編輯模式常用快捷鍵匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • 利用python?制作詞云特效詳情

    利用python?制作詞云特效詳情

    這篇文章主要介紹了利用python?制作詞云特效詳情,?詞云?也是數(shù)據(jù)可視化的一種形,根據(jù)關(guān)鍵詞的出現(xiàn)頻率而生成的一幅圖像,人們只要掃一眼就能夠明白其文章主旨,下文詳細介紹,需要的朋友可以參考一下
    2022-04-04
  • Python實現(xiàn)輸入若干個正整數(shù),升序后輸出

    Python實現(xiàn)輸入若干個正整數(shù),升序后輸出

    這篇文章主要介紹了Python實現(xiàn)輸入若干個正整數(shù),升序后輸出方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • YOLOv5中SPP/SPPF結(jié)構(gòu)源碼詳析(內(nèi)含注釋分析)

    YOLOv5中SPP/SPPF結(jié)構(gòu)源碼詳析(內(nèi)含注釋分析)

    其實關(guān)于YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)其實網(wǎng)上相關(guān)的講解已經(jīng)有很多了,但是覺著還是有必要再給大家介紹下,下面這篇文章主要給大家介紹了關(guān)于YOLOv5中SPP/SPPF結(jié)構(gòu)源碼的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • python 基于opencv去除圖片陰影

    python 基于opencv去除圖片陰影

    這篇文章主要介紹了python 基于opencv去除圖片陰影的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python下的Mysql模塊MySQLdb安裝詳解

    Python下的Mysql模塊MySQLdb安裝詳解

    在Python環(huán)境下,如果想操作MySQL數(shù)據(jù)庫,難免會調(diào)用相應(yīng)的包,比如常用的:MySQLdb通過導(dǎo)入:import MySQLdb 后,可直接調(diào)用里面的方法
    2014-04-04
  • Python卸載模塊的方法匯總

    Python卸載模塊的方法匯總

    本文給大家匯總介紹了3種卸載Python已安裝模塊的方法,推薦大家使用easy_install或者pip的方式來進行,簡單方便
    2016-06-06

最新評論