python中argparse模塊基礎(chǔ)及使用步驟
argparse模塊用法
一、 概念
argsparse是python的命令行解析的標(biāo)準(zhǔn)模塊,內(nèi)置于python,不需要安裝。這個(gè)庫(kù)可以讓我們直接在命令行中就可以向程序中傳入?yún)?shù)并讓程序運(yùn)行。
官方文檔的位置:【https://docs.python.org/zh-cn/3/library/argparse.html】
在這里我們利用git來演示命令行運(yùn)行
git -h git -version git show
二、 基礎(chǔ)
1、 使用步驟
1.1 總步驟
1.導(dǎo)包: import argparse 2.創(chuàng)建對(duì)象: parser = argparse.ArgumentParser() 3.添加參數(shù): parser.add_argument() 4.解析參數(shù): parser.parse_args()
1.2 創(chuàng)建對(duì)象
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ù)說明:
- prog:程序的名字,默認(rèn)為sys.argv[0],用來在help信息中描述程序的名稱
- usag:描述程序用途的字符串
- description:help信息前的文字
- epilog:help信息之后的信息
- add_help:是否添加幫助信息
- prefix_chars:參數(shù)前綴,默認(rèn)為-
- fromfile_prefix_chars:前綴字符,放在文件名之前
- argument_default:參數(shù)的全局默認(rèn)值
- conflict_hander:對(duì)沖突的處理方式,默認(rèn)為返回錯(cuò)誤“error”。還有“resolve”,智能解決沖突。當(dāng)用戶給程序添加了兩個(gè)一樣的命令參數(shù)時(shí),“error”就直接報(bào)錯(cuò),提醒用戶。而“resolve”則會(huì)去掉第一次出現(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()運(yùn)行時(shí),會(huì)用-來認(rèn)證可選參數(shù),剩下的即為位置參數(shù)。位置參數(shù)必選,可選參數(shù)可選
# 可選參數(shù)
parser.add_argument("-f", "--foo")
# 位置參數(shù)
parser.add_argument("bar") # 位置參數(shù)在運(yùn)行時(shí)一定要輸入action:動(dòng)作,argparse內(nèi)置6種動(dòng)作可以在解析到一個(gè)參數(shù)時(shí)進(jìn)行觸發(fā)store:保存參數(shù)值,可能會(huì)先將參數(shù)值轉(zhuǎn)換成另一個(gè)數(shù)據(jù)類型。默認(rèn)動(dòng)作為這個(gè)store_const:保存一個(gè)被定義為參數(shù)規(guī)格一部分的值,而不是一個(gè)來自參數(shù)解析而來的值。這通常用于實(shí)現(xiàn)非布爾值的命令行標(biāo)記stroe_true/store_false:保存相應(yīng)的布爾值,這兩個(gè)動(dòng)作被用于實(shí)現(xiàn)布爾開關(guān)append:將值保存到一個(gè)列表中。若參數(shù)重復(fù)出現(xiàn),則保存多個(gè)值append_const:將一個(gè)定義在參數(shù)規(guī)格中的值保存到一個(gè)列表中version:打印關(guān)于程序的版本信息,然后退出
parse.add_argument('--version',action = 'version',version = '%(prog)s2.0')nargs:參數(shù)的數(shù)量- 值可以為整數(shù),*(任意多個(gè)),+(一個(gè)或更多)
- 首先從命令行獲取參數(shù),若沒有則從
const獲得,然后從default獲得 - dest:參數(shù)值就保存為parse_args()返回的命名空間對(duì)象中為該dest參數(shù)值的一個(gè)屬性。如果提供dest="a",那么可以通過args.a訪問該參數(shù)
- default:設(shè)置參數(shù)的默認(rèn)值
- type:把從命令行輸入的結(jié)果轉(zhuǎn)成設(shè)置的類型
- choice:允許的參數(shù)值
- requires:是否必選
- desk:可作為參數(shù)名
- help:參數(shù)命令的介紹
參數(shù)的幾種寫法:
python py.py -i 1 # 使用空格分開 python py.py --integer=1 # 長(zhǎng)選項(xiàng)使用等號(hào)分開 python py.py -i1 # 短選項(xiàng)可以寫一起
1.4 解析參數(shù)
args = parser.parse_args() # 括號(hào)里面可以傳入命令行的參數(shù)
args_ = parser.parse_args("-i=1".split("="))三、 使用案例
我們可以創(chuàng)建一個(gè)模板:
#!/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ù)時(shí),就在這里添加
"---------------------------------------------------------------"
args = parser.parse_args()
else:
args = None
@wraps(fun)
def inner():
ret = fun(args) # 可能在傳參數(shù)是還要進(jìn)行其他的初始化操作
return ret
return inner
return get_params
@terminal() # 使用裝飾器
def main(args):
print(args)
if __name__ == "__main__":
main()
sys.exit(0)使用案例,創(chuàng)建一個(gè)程序,可以連接郵箱的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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python數(shù)據(jù)挖掘使用Evidently創(chuàng)建機(jī)器學(xué)習(xí)模型儀表板
在本文中,我們將探索 Evidently 并創(chuàng)建交互式報(bào)告/儀表板。有需要的朋友歡迎大家收藏學(xué)習(xí),希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11
python PyQt5對(duì)象類型的判定及對(duì)象刪除操作詳細(xì)解讀
PyQt5主要是用來判定一個(gè)對(duì)象的類型,或者說是否繼承自某個(gè)類,本文給大家介紹python PyQt5對(duì)象類型的判定,對(duì)象刪除操作詳細(xì)解讀,感興趣的朋友一起看看吧2024-07-07
Python使用 Beanstalkd 做異步任務(wù)處理的方法
這篇文章主要介紹了Python使用 Beanstalkd 做異步任務(wù)處理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
關(guān)于Python?Selenium自動(dòng)化導(dǎo)出新版WOS(web?of?science)檢索結(jié)果的問題
這篇文章主要介紹了Python?Selenium自動(dòng)化導(dǎo)出新版WOS(web?of?science)檢索結(jié)果,本代碼屬于半自動(dòng)化導(dǎo)出,考慮到開發(fā)效率等因素,有兩處在首次導(dǎo)出時(shí)需要手動(dòng)操作,具體實(shí)現(xiàn)過程跟隨小編一起看看吧2022-01-01
Python實(shí)現(xiàn)CAN報(bào)文轉(zhuǎn)換工具教程
這篇文章主要介紹了Python實(shí)現(xiàn)CAN報(bào)文轉(zhuǎn)換工具教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05
詳解python的網(wǎng)絡(luò)編程基礎(chǔ)
這篇文章主要為大家介紹了python網(wǎng)絡(luò)編程的基礎(chǔ),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01

