<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
argsparse是python的命令列解析的標準模組,內建於python,不需要安裝。這個庫可以讓我們直接在命令列中就可以向程式中傳入引數並讓程式執行。
官方檔案的位置:【https://docs.python.org/zh-cn/3/library/argparse.html】
在這裡我們利用git
來演示命令列執行
git -h git -version git show
1.導包: import argparse 2.建立物件: parser = argparse.ArgumentParser() 3.新增引數: parser.add_argument() 4.解析引數: parser.parse_args()
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)
引數說明:
add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
引數說明:
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
獲得引數的幾種寫法:
python py.py -i 1 # 使用空格分開 python py.py --integer=1 # 長選項使用等號分開 python py.py -i1 # 短選項可以寫一起
args = parser.parse_args() # 括號裡面可以傳入命令列的引數 args_ = parser.parse_args("-i=1".split("="))
我們可以建立一個模板:
#!/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服務
#!/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模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45