欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?命令行解析工具?argparse基本用法

 更新時(shí)間:2022年12月24日 11:34:05   作者:Python數(shù)據(jù)開(kāi)發(fā)  
在工作中,我們經(jīng)常需要從命令行當(dāng)中解析出指定的參數(shù),而?Python?也提供了相應(yīng)的標(biāo)準(zhǔn)庫(kù)來(lái)做這件事情,比如?sys,?optparse,?getopt,?argparse,這里面功能最強(qiáng)大的莫過(guò)于?argparse,下面就來(lái)看看它用法,需要的朋友可以參考下

在工作中,我們經(jīng)常需要從命令行當(dāng)中解析出指定的參數(shù),而 Python 也提供了相應(yīng)的標(biāo)準(zhǔn)庫(kù)來(lái)做這件事情,比如 sys, optparse, getopt, argparse。這里面功能最強(qiáng)大的莫過(guò)于 argparse,下面就來(lái)看看它用法。

import argparse  
  
# 使用 argparse 分為以下幾步  
# 1. 創(chuàng)建命令行解析器對(duì)象  
parse = argparse.ArgumentParser(  
    description="這是命令行解析器"  
)  
  
# 2.給解析器添加命令行參數(shù),可以添加任意個(gè)  
parse.add_argument("-n", dest="name")  
  
# 3. 從命令中將參數(shù)解析出來(lái)  
args = parse.parse_args()  
  
# 然后通過(guò) args 便可以拿到相應(yīng)的參數(shù)值  
print(args.name)

我們執(zhí)行一下看看,當(dāng)前文件叫做 tools.py。

技術(shù)提升

本文由技術(shù)群粉絲投稿分享,項(xiàng)目源碼、數(shù)據(jù)、技術(shù)交流提升,均可加交流群獲取,群友已超過(guò)2000人,添加時(shí)最好的備注方式為:來(lái)源+興趣方向,方便找到志同道合的朋友

怎么樣,是不是很簡(jiǎn)單呢?所以我們的重點(diǎn)就在 add_argument 方法上面,來(lái)看看它都支持哪些參數(shù)。

import argparse  
  
parse = argparse.ArgumentParser()  
  
# 這里出現(xiàn)了 "-n" 和 "--name"  
# 在命令行中可以通過(guò) '-n 古明地覺(jué)' 或者 '--name 古明地覺(jué)' 進(jìn)行指定  
# 兩者的含義是一樣的,但 - 后面一般跟短參數(shù),-- 后面跟長(zhǎng)參數(shù)  
# 然后是 dest,它表示獲取相關(guān)參數(shù)值時(shí),使用的名稱(chēng)  
parse.add_argument("-n", "--name", dest="name")  
# 這里只有一個(gè)短參數(shù),那么在命令行中需要通過(guò) -a 來(lái)指定  
parse.add_argument("-a", dest="age")  
# 這里只有一個(gè)長(zhǎng)參數(shù),那么在命令行中需要通過(guò) --gender 來(lái)指定  
parse.add_argument("--gender", dest="gender")  
  
args = parse.parse_args()  
  
print(f"name: {args.name}, age: {args.age}, gender: {args.gender}")

我們來(lái)試一下:

還是很簡(jiǎn)單的,一個(gè) - 后面跟的是短參數(shù),兩個(gè) - 后面跟的是長(zhǎng)參數(shù)。在命令行中通過(guò) - 或者 – 進(jìn)行指定,解析完畢之后再通過(guò) dest 參數(shù)指定的名字進(jìn)行獲取。

另外,雖然 - 后面跟短參數(shù),-- 后面跟長(zhǎng)參數(shù),但我們這樣寫(xiě)也是可以的。

parse.add_argument("-name", "--n", dest="name")

只不過(guò)這種寫(xiě)法比較怪異,應(yīng)該寫(xiě)成 --name 和 -n,一個(gè)橫杠后面是短參數(shù),兩個(gè)是長(zhǎng)參數(shù)。

然后這些參數(shù)都是可以不指定的,會(huì)使用默認(rèn)值 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}")

我們看到當(dāng) host 不指定的時(shí)候,就會(huì)報(bào)錯(cuò)。并且我們還通過(guò) default 參數(shù)指定了默認(rèn)值。

然后是參數(shù)值的類(lèi)型,不管什么參數(shù),只要我們?cè)诿钚挟?dāng)中傳遞了,那么解析出來(lái)的默認(rèn)都是字符串類(lèi)型。

import argparse  
  
parse = argparse.ArgumentParser()  
  
parse.add_argument("-p", dest="port", default=6379)  
  
args = parse.parse_args()  
  
print(f"port 類(lèi)型: {args.port.__class__}")

那么可不可以指定參數(shù)的類(lèi)型呢?答案是可以的。

import argparse  
  
parse = argparse.ArgumentParser()  
parse.add_argument("-p", dest="port", type=int)  
args = parse.parse_args()  
  
print(f"port 類(lèi)型: {args.port.__class__}")

通過(guò)指定 type 為 int,那么在將參數(shù)值解析出來(lái)之后就會(huì)調(diào)用 int 進(jìn)行轉(zhuǎn)化,轉(zhuǎn)化失敗則報(bào)錯(cuò)。

同理,我們也可以換成其它類(lèi)型,舉個(gè)例子。

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

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

nargs 指定為 *,那么表示 --hobby 可以接收多個(gè)值,并且值之間使用空格進(jìn)行分隔,最終會(huì)得到一個(gè)列表。如果指定 --hobby,但是不傳值,那么會(huì)得到空列表。

以上就是 argparse 的基本用法,更多內(nèi)容可以參考官方文檔。

到此這篇關(guān)于Python 命令行解析工具 argparse很好用的文章就介紹到這了,更多相關(guān)Python   argparse內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)敵人精靈篇

    Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)敵人精靈篇

    相信大多數(shù)8090后都玩過(guò)太空射擊游戲,在過(guò)去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來(lái)自己動(dòng)手實(shí)現(xiàn)它,在編寫(xiě)學(xué)習(xí)中回顧過(guò)往展望未來(lái),下面開(kāi)始講解敵人精靈的使用
    2022-08-08
  • Python筆記之a(chǎn) = [0]*x格式的含義及說(shuō)明

    Python筆記之a(chǎn) = [0]*x格式的含義及說(shuō)明

    這篇文章主要介紹了Python筆記之a(chǎn) = [0]*x格式的含義及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Mac下python包管理工具pip的安裝

    Mac下python包管理工具pip的安裝

    這篇文章介紹了Mac下python包管理工具pip的安裝方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 用python獲取txt文件中關(guān)鍵字的數(shù)量

    用python獲取txt文件中關(guān)鍵字的數(shù)量

    這篇文章主要介紹了如何用python獲取txt文件中關(guān)鍵字的數(shù)量,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 自己搭建resnet18網(wǎng)絡(luò)并加載torchvision自帶權(quán)重的操作

    自己搭建resnet18網(wǎng)絡(luò)并加載torchvision自帶權(quán)重的操作

    這篇文章主要介紹了自己搭建resnet18網(wǎng)絡(luò)并加載torchvision自帶權(quán)重的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 終于明白tf.reduce_sum()函數(shù)和tf.reduce_mean()函數(shù)用法

    終于明白tf.reduce_sum()函數(shù)和tf.reduce_mean()函數(shù)用法

    這篇文章主要介紹了終于明白tf.reduce_sum()函數(shù)和tf.reduce_mean()函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python Flask搭建yolov3目標(biāo)檢測(cè)系統(tǒng)詳解流程

    Python Flask搭建yolov3目標(biāo)檢測(cè)系統(tǒng)詳解流程

    YOLOv3沒(méi)有太多的創(chuàng)新,主要是借鑒一些好的方案融合到Y(jié)OLO里面。不過(guò)效果還是不錯(cuò)的,在保持速度優(yōu)勢(shì)的前提下,提升了預(yù)測(cè)精度,尤其是加強(qiáng)了對(duì)小物體的識(shí)別能力
    2021-11-11
  • Python json讀寫(xiě)方式和字典相互轉(zhuǎn)化

    Python json讀寫(xiě)方式和字典相互轉(zhuǎn)化

    這篇文章主要介紹了Python json讀寫(xiě)方式和字典相互轉(zhuǎn)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python3實(shí)現(xiàn)隨機(jī)數(shù)

    python3實(shí)現(xiàn)隨機(jī)數(shù)

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)隨機(jī)數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python變量的作用域詳解

    Python變量的作用域詳解

    這篇文章主要為大家介紹了Python變量的作用域,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12

最新評(píng)論