Python?命令行解析工具?argparse基本用法
在工作中,我們經(jīng)常需要從命令行當中解析出指定的參數(shù),而 Python 也提供了相應的標準庫來做這件事情,比如 sys, optparse, getopt, argparse。這里面功能最強大的莫過于 argparse,下面就來看看它用法。
import argparse
# 使用 argparse 分為以下幾步
# 1. 創(chuàng)建命令行解析器對象
parse = argparse.ArgumentParser(
description="這是命令行解析器"
)
# 2.給解析器添加命令行參數(shù),可以添加任意個
parse.add_argument("-n", dest="name")
# 3. 從命令中將參數(shù)解析出來
args = parse.parse_args()
# 然后通過 args 便可以拿到相應的參數(shù)值
print(args.name)我們執(zhí)行一下看看,當前文件叫做 tools.py。

技術提升
本文由技術群粉絲投稿分享,項目源碼、數(shù)據(jù)、技術交流提升,均可加交流群獲取,群友已超過2000人,添加時最好的備注方式為:來源+興趣方向,方便找到志同道合的朋友
怎么樣,是不是很簡單呢?所以我們的重點就在 add_argument 方法上面,來看看它都支持哪些參數(shù)。
import argparse
parse = argparse.ArgumentParser()
# 這里出現(xiàn)了 "-n" 和 "--name"
# 在命令行中可以通過 '-n 古明地覺' 或者 '--name 古明地覺' 進行指定
# 兩者的含義是一樣的,但 - 后面一般跟短參數(shù),-- 后面跟長參數(shù)
# 然后是 dest,它表示獲取相關參數(shù)值時,使用的名稱
parse.add_argument("-n", "--name", dest="name")
# 這里只有一個短參數(shù),那么在命令行中需要通過 -a 來指定
parse.add_argument("-a", dest="age")
# 這里只有一個長參數(shù),那么在命令行中需要通過 --gender 來指定
parse.add_argument("--gender", dest="gender")
args = parse.parse_args()
print(f"name: {args.name}, age: {args.age}, gender: {args.gender}")我們來試一下:

還是很簡單的,一個 - 后面跟的是短參數(shù),兩個 - 后面跟的是長參數(shù)。在命令行中通過 - 或者 – 進行指定,解析完畢之后再通過 dest 參數(shù)指定的名字進行獲取。
另外,雖然 - 后面跟短參數(shù),-- 后面跟長參數(shù),但我們這樣寫也是可以的。
parse.add_argument("-name", "--n", dest="name")只不過這種寫法比較怪異,應該寫成 --name 和 -n,一個橫杠后面是短參數(shù),兩個是長參數(shù)。
然后這些參數(shù)都是可以不指定的,會使用默認值 None。

如果我希望它是必傳參數(shù),該怎么辦呢?
import argparse
parse = argparse.ArgumentParser()
parse.add_argument("--host", dest="host", required=True)
parse.add_argument("-p", dest="port", default=6379)
args = parse.parse_args()
print(f"host: {args.host}, port: {args.port}")
我們看到當 host 不指定的時候,就會報錯。并且我們還通過 default 參數(shù)指定了默認值。
然后是參數(shù)值的類型,不管什么參數(shù),只要我們在命令行當中傳遞了,那么解析出來的默認都是字符串類型。
import argparse
parse = argparse.ArgumentParser()
parse.add_argument("-p", dest="port", default=6379)
args = parse.parse_args()
print(f"port 類型: {args.port.__class__}")
那么可不可以指定參數(shù)的類型呢?答案是可以的。
import argparse
parse = argparse.ArgumentParser()
parse.add_argument("-p", dest="port", type=int)
args = parse.parse_args()
print(f"port 類型: {args.port.__class__}")通過指定 type 為 int,那么在將參數(shù)值解析出來之后就會調(diào)用 int 進行轉化,轉化失敗則報錯。

同理,我們也可以換成其它類型,舉個例子。

還是很簡單的,甚至換成我們自定義的類,或者一個函數(shù)也是可以的,

此時我們就實現(xiàn)了給一個參數(shù)傳遞多個值,不過這種做法屬于是曲線救國,我們應該通過另一個參數(shù)實現(xiàn)。

nargs 指定為 *,那么表示 --hobby 可以接收多個值,并且值之間使用空格進行分隔,最終會得到一個列表。如果指定 --hobby,但是不傳值,那么會得到空列表。
以上就是 argparse 的基本用法,更多內(nèi)容可以參考官方文檔。
到此這篇關于Python 命令行解析工具 argparse很好用的文章就介紹到這了,更多相關Python argparse內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python數(shù)學建模PuLP庫線性規(guī)劃入門示例詳解
這篇文章主要為大家介紹了Python數(shù)學建模PuLP庫線性規(guī)劃入門示例詳解,想學習關于Python建模的同學可以學習參考下,希望能夠有所幫助2021-10-10
python實現(xiàn)轉盤效果 python實現(xiàn)輪盤抽獎游戲
這篇文章主要為大家詳細介紹了python實現(xiàn)轉盤效果,python實現(xiàn)輪盤抽獎游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
Tensorflow2.10實現(xiàn)圖像分割任務示例詳解
這篇文章主要為大家介紹了Tensorflow2.10實現(xiàn)圖像分割任務示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Python控制臺實現(xiàn)交互式環(huán)境執(zhí)行
這篇文章主要介紹了Python程序如何在交互式環(huán)境中執(zhí)行,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06

