初學python,今天在偶然間了解到python中有個解析模組argparse,其實此解析模組和linuxc下的getopt()的功能大同小異,寫此篇博文的目的只是為了做個筆記~
熟悉linux系統命令的人都知道,每個命令後面都可以跟許多引數來實現不同的功能,拿最簡單的ls來舉例吧
當我們輸入ls是終端就會展示出當前目錄下的所有檔名通過上面對ls加參的幾種用法的簡單介紹,我想大家因該對命令列引數的作用有所認識了吧,接下來我就會開始介紹我們可以在python中如何利用argparse模組來幫助我們解析命令列引數當我們輸入ls filename,此時ls後面加了對應的檔名於是終端就會輸出該目錄對應下面的所有檔案
當我們輸入ls -l時,則此時終端會展示當前目錄下各個檔案的詳細資訊
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...