Python解析模組argparse

2021-07-11 22:22:51 字數 2682 閱讀 9647

初學python,今天在偶然間了解到python中有個解析模組argparse,其實此解析模組和linuxc下的getopt()的功能大同小異,寫此篇博文的目的只是為了做個筆記~

熟悉linux系統命令的人都知道,每個命令後面都可以跟許多引數來實現不同的功能,拿最簡單的ls來舉例吧

當我們輸入ls是終端就會展示出當前目錄下的所有檔名

當我們輸入ls filename,此時ls後面加了對應的檔名於是終端就會輸出該目錄對應下面的所有檔案

當我們輸入ls -l時,則此時終端會展示當前目錄下各個檔案的詳細資訊

通過上面對ls加參的幾種用法的簡單介紹,我想大家因該對命令列引數的作用有所認識了吧,接下來我就會開始介紹我們可以在python中如何利用argparse模組來幫助我們解析命令列引數

argparse的用法初體驗

(1)假設我們想讓使用者在執行程式時必須加上乙個命令列引數

#! /usr/bin/python

#匯入解析模組的包

import argparse

parser = argparse.argumentparser()

#增加乙個命令列引數對應的引數名為echo,-h之後對其的解釋文help對應的字串

parser.add_argument('echo',help = 'show the string you use here')

args = parser.parse_args()

//列印獲取的引數

print args.echo

首先我們不加引數來執行程式試試

可以看出錯誤提示為引數太少~

接著我們加-h(此為解析模組預設支援的引數)試試

從幫助資訊中我們可以得知,此程式我們必須要加乙個引數,其對應名為echo,而且後面有提示該引數的作用為展示對應命令引數在程式中

於是我們隨便加個命令字元試試

結果如下

可以看出和我們上述講的一樣程式中輸出了對應的命令列引數

(2)指定命令列引數的型別

假如我們想指定輸入型別該咋麼做(預設為字串型別)

例項指定型別為整形

#! /usr/bin/python

import argparse

parser = argparse.argumentparser()

parser.add_argument('value',help = 'show 2 * value',type =

int)

args = parser.parse_args()

print args.value *2

若我們命令列引數輸入為4

(3)新增可變引數

上述例子中我們僅僅是展示了定參(執行程式時必須有)的用法,那麼我們如何新增可選引數呢?

先看乙個例子

#! /usr/bin/python

import argparse

parser = argparse.argumentparser()

#新增可選引數

parser.add_argument('-verbosity',help = 'increase output verbosity')

args = parser.parse_args()

if args.verbosity:

print

"verbosity turned on"

如上所示要設定乙個可選引數,我們只需在新增引數時在引數名前加』-『或』–』都行

測試如下

上述例項中我們必須當加了-verbosity時後面就必須給出個引數,有時這個引數是多餘的,例如當只需判斷可選引數加或未加就足夠時,此時我們剛才的程式可以這樣做

#! /usr/bin/python

import argparse

parser = argparse.argumentparser()

parser.add_argument('-verbosity',help = 'increase output verbosity',action = 'store_true')

args = parser.parse_args()

if args.verbosity:

print

"verbosity turned on"

執行結果如下

上述**通過關鍵此action指定為store_ture時就可以達到只選參後面不許在跟引數

總結:

關於argparse就先總結這麼多,如果大家想用此模組實現更高階的功能

python命令列引數解析工具 argparse

在命令列中執行py檔案的時候 這在linux系統中尤為常見 是否可以像執行內部的函式那樣設定可變引數呢?這樣做可以避免進入py檔案再次編寫檔案的尷尬,同時也意味著減少bug的發生。argparse就是這樣可以在幫助在命令列中新增引數的工具,基本的使用方法如下 所示 coding utf 8 impo...

python模組匯入方法解析

python中的模組引入問題特別亂,看了好多網上的介紹也是雜亂無張的.今天自己測試了一下,總結如下.如果有不對的不周全的地方.希望提醒.假設我的檔案目錄如下 module 總目錄 package1 子目錄 init py basicclass.py basicdef.py firchildmain....

python模組包呼叫解析

原文 a init py a.py b init py b.py c init py c.py 如圖所示結構樹,b,c同屬於a的子目錄,但是b,c之間是平行的。b.py,c.py 分別如下 b.py def b hello print b hello c.py def c hello print c...