網(wǎng)站首頁 編程語言 正文
一、argparse簡介
argparse 是 python 自帶的命令行參數(shù)解析包,可以用來方便的服務命令行參數(shù),使用之前需要先導入包 import argparse
二、簡單案例
簡單使用,創(chuàng)建一個名為test.py的文件
# 導入 argparse 模塊
import argparse
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser()
# 添加一個接收參數(shù),默認值為Se7eN
parser.add_argument("-n", "--name", default="Se7eN")
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
打印結果為:
houlei@houleideMacBook-Pro argparse_demo % python3 test.py # 此時在test.py后面沒有跟上參數(shù),
args = Namespace(name='Se7eN') # 所以打印出來的name為默認值 Se7eN
再次驗證:
houlei@houleideMacBook-Pro argparse_demo % python3 test.py -n HOU # 此時后面跟上了 -n 參數(shù),并且賦值HOU
args = Namespace(name='HOU') # 打印出來 name 的值為 HOU
houlei@houleideMacBook-Pro argparse_demo % python3 test.py --name hou # 此時后面跟上了 --name 參數(shù),并賦值為hou
args = Namespace(name='hou') # 打印出來的 name 的值為 hou
houlei@houleideMacBook-Pro argparse_demo %
解釋說明
在上述代碼??parser.add_argument("-n", "--name", default="Se7eN") 中,有兩個參數(shù) “-n”和“--name” 分別代表什么?其中-n 和 --name 都是我們自己自定的參數(shù)名。至于n和name ,你可以隨便起個變量名都可以,但是要注意,前面的一個 “-”和“--”才是關鍵。
一個“-”的參數(shù),例如:-n, 他其實相當于我們在liunx中使用的指令,一個自定義的指令。
兩個“--”的參數(shù),例如:--name 他就相當于在程序中,用來接收對對應指令值的變量,例如我們在控制臺上輸入 python3 test.py -n hou。 其中 -n 就代表使用的 -n 的指令,然后將后面的 hou 的值賦值給對應的變量, -n 對應的變量就是 --name 。所以我們使用print 打印的時候才顯示的name = hou
簡單理解:一個“-”的是指令,兩個“--”的是接收指令內(nèi)容的變量。
三、ArgumentParser參數(shù)
ArgumentParse是解析器對象,在創(chuàng)建一個解析器對象的時候,是有很多參數(shù)可以配置,下面就演示一下這些參數(shù)的使用
1、prog: 程序的名稱(默認值:sys.argv[0])
# 導入 argparse 模塊
import argparse
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser()
# 添加一個接收參數(shù),默認值為Se7eN
parser.add_argument("-n", "--name", default="Se7eN")
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
執(zhí)行代碼:
修改代碼繼續(xù)演示
# 導入 argparse 模塊
import argparse
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname") # 注意這里添加了prog=testname
# 添加一個接收參數(shù),默認值為Se7eN
parser.add_argument("-n", "--name", default="Se7eN")
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
2、usage: 用來描述該程序的用途,并且會覆蓋原來的prog的顯示
修改部分程序:
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊")
展示結果
3、description:幫助文檔的描述和uasge功能類似,只是顯示的位置不一樣
繼續(xù)修改部分代碼:
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類似")
展示結果
4、epilog:幫助文檔的額外說明,位置在最下面
繼續(xù)修改部分代碼:
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類似", epilog="額外說明")
展示結果:
5、自定義指令的前綴
默認是"-" 和 "--",這里如果你不喜歡使用,也可以自通過該參數(shù)自己指定前綴,個人覺得沒必要。
代碼演示:
# 導入 argparse 模塊
import argparse
# 創(chuàng)建一個argparse 的對象 ,并通過prefix_chars 指定指令的前綴為 '+'
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類似", epilog="額外說明", prefix_chars='+')
# 添加一個接收參數(shù),默認值為Se7eN,這里的指令只能使用+ 表示,否則會報錯
parser.add_argument("+n", "++name", default="Se7eN")
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
執(zhí)行結果
四、add_argument指令參數(shù)解釋
1、action: 的作用比較多,有保存布爾類型,常量類型,數(shù)組類型的參數(shù)的功能
注意1:使用action = store_true/store_false 時修飾的指令是不能賦值的,其對應的指令的值是布爾類型的
注意2:使用action = store_const 時修飾的指令的是不能賦值,其對應的指令的值常量類型
注意3:使用action = append 是可以復制,其對應的值會將該指令對應的值放在一個數(shù)組中
1.1 先來演示
使用action,保存布爾類型的指令的值:store_true/store_false:保存布爾類型的變量:
# 導入 argparse 模塊
import argparse
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類似", epilog="額外說明")
# 添加一個接收參數(shù) -n,action = store_true 表示,<strong>在使用的時候,如果填寫了該指令,那么該指令對應的值就是true,如果沒有使用該指令,則為空</strong>
parser.add_argument("-n", "--name", action='store_true')
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
執(zhí)行結果:
1.2、使用action設置常量指令
修改代碼演示:
# 添加一個接收參數(shù) -n,action = store_const 表示,在使用的時候,如果填寫了該指令,那么該指就等于10 如果沒寫就等于空
parser.add_argument("-n", "--name", action='store_const',const=10)
執(zhí)行結果:
1.3、使用action設置數(shù)組類型的指令
修改代碼演示:
# 添加一個接收參數(shù) -n,action = append, 會把該指令的值放在數(shù)組中
parser.add_argument("-n", "--name", action='append')
執(zhí)行結果
2、nargs參數(shù):表示該指令接收值的個數(shù)
示例1:
import argparse
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類似", epilog="額外說明")
# 添加一個接收參數(shù) -n, 并且該參數(shù)還必須要接收2個值,會放在一個數(shù)組中,其中nargs等于幾,就表示要接受幾個參數(shù)
parser.add_argument("-n", "--name", nargs=2)
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
運行結果:
示例2:
# 導入 argparse 模塊
import argparse
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類似", epilog="額外說明")
# 添加一個接收參數(shù) -n,
# nargs = "?" : 表示只接收1個參數(shù),正則表達式的寫法
# nargs = "+" : 表示接收1一個或多個參數(shù)
# nargs = "*" : 表示接收0個或者多個參數(shù)
parser.add_argument("-n", "--name", nargs="*")
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
打印結果就不演示了
3、required 該指令是必須的
# 導入 argparse 模塊
import argparse
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類似", epilog="額外說明")
# 添加一個接收參數(shù) -n,
# nargs = "?" : 表示只接收1個參數(shù),正則表達式的寫法
# nargs = "+" : 表示接收1一個或多個參數(shù)
# nargs = "*" : 表示接收0個或者多個參數(shù)
parser.add_argument("-n", "--name", nargs="*", required=True)
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
演示結果:
4、choices:如有choices選項,則該指令的值只能是choices中的一個
代碼演示
# 導入 argparse 模塊
import argparse
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類似", epilog="額外說明")
# 添加一個接收參數(shù) -n,
# nargs = "?" : 表示只接收1個參數(shù),正則表達式的寫法
# nargs = "+" : 表示接收1一個或多個參數(shù)
# nargs = "*" : 表示接收0個或者多個參數(shù)
parser.add_argument("-n", "--name", nargs="*", required=True, choices=['zhangsan', 'lisi'])
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
運行結果:
五、vars()
vars()方法可以將parser對象變成字典,方便使用
代碼演示
# 導入 argparse 模塊
import argparse
# 創(chuàng)建一個argparse 的對象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類似", epilog="額外說明")
# 添加一個接收參數(shù) -n,
# nargs = "?" : 表示只接收1個參數(shù),正則表達式的寫法
# nargs = "+" : 表示接收1一個或多個參數(shù)
# nargs = "*" : 表示接收0個或者多個參數(shù)
parser.add_argument("-n", "--name", nargs="*", required=True, choices=['zhangsan', 'lisi'])
# 獲取對應的參數(shù)的值
args = parser.parse_args()
# 控制臺打印出來接收到的值
print("args = {}".format(args))
# 將parser 變成字典對象
print('arg_vars = {}'.format(vars(args)))
輸出結果:
原文鏈接:https://www.cnblogs.com/Se7eN-HOU/p/16689328.html
相關推薦
- 2022-05-08 ASP.NET?MVC異常過濾器用法_實用技巧
- 2022-11-07 python一招完美搞定Chromedriver的自動更新問題_python
- 2023-09-18 element-plus 字體變色之cell-style
- 2022-08-02 pyspark自定義UDAF函數(shù)調(diào)用報錯問題解決_python
- 2022-12-21 Android?RecyclerView四級緩存源碼層詳細分析_Android
- 2022-06-07 Python必備技巧之函數(shù)的使用詳解_python
- 2022-06-29 RedisTemplate常用操作方法總結(set、hash、list、string等)_Redis
- 2022-08-27 C#獲取打印機列表方法介紹_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支