如何使用Python對參數(shù)進行解析

如何使用Python對參數(shù)進行解析

通常情況下,在讀取命令行的參數(shù)時诀黍,我用的就是sys庫髓抑, 讀取輸入的參數(shù)進行處理

import sys
arg1 = sys.argv

由于很多腳本就我自己一個人用咙崎,所以這樣寫沒啥問題。但是如果要給別人用吨拍,或者時間過得久遠些褪猛,那么就得要把參數(shù)使用說明寫的具體些,方便將來使用羹饰。

Python提供了argparse庫伊滋,讓我們更加容易的進行命令行參數(shù)解析。簡略流程為队秩,先用ArgumentParser創(chuàng)建參數(shù)解析對象ArgumentParser笑旺,再用add_argument()在解析對象里添加要解析的參數(shù). 最后用parse_args()進行解析,返回參數(shù)所在的命名空間馍资。如果涉及到子命令筒主,則還需要add_subparsers

基礎

讓我們先用一個簡單的例子了解下argparse的功能

#!/usr/bin/env python
# prog.py
import argparse

parser = argparse.ArgumentParser()
parser.parse_args()

以不同方式運行代碼

$ python multi_pilon.py          
$ python multi_pilon.py --help   
usage: multi_pilon.py [-h]

optional arguments:
  -h, --help  show this help message and exit

$ python multi_pilon.py --verbose
usage: multi_pilon.py [-h]
multi_pilon.py: error: unrecognized arguments: --verbose

當我們不傳遞任何參數(shù)時,腳本不會輸出任何信息乌妙;當我們用--help時使兔,得到了腳本的一些使用說明;當我們傳入其他沒有聲明的參數(shù)時藤韵,腳本輸出了報錯信息虐沥。

位置參數(shù)

位置參數(shù)就是在命令后面跟著的不以---開頭的參數(shù), 舉個例子

#!/usr/bin/env python

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()

print(args.echo)

代碼運行

$ python prog.py 
usage: prog.py [-h] echo
prog.py: error: too few arguments
$ python prog.py foo
foo

我們用add_argument()方法增加了待解析的位置參數(shù)。這時如果不提供足夠多的參數(shù)泽艘,運行程序時就會出現(xiàn)報錯信息置蜀。當提供對應參數(shù)時,代碼就能正常運行悉盆。

add_arguments() 可以傳入多個參數(shù)盯荤,比較常用的是helptype, 一個能用于完善幫助信息,一個則是讓python自動完成數(shù)據(jù)類型的轉換

#!/usr/bin/env python

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",type =int)
args = parser.parse_args()

print(args.square ** 2)

代碼執(zhí)行的結果如下

$ python prog.py -h
usage: prog.py [-h] square

positional arguments:
  square      display a square of a given number

optional arguments:
  -h, --help  show this help message and exit
$ python prog.py 2 
4
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末焕盟,一起剝皮案震驚了整個濱河市秋秤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脚翘,老刑警劉巖灼卢,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異来农,居然都是意外死亡鞋真,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門沃于,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涩咖,“玉大人,你說我怎么就攤上這事繁莹¢莼ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵咨演,是天一觀的道長闸昨。 經(jīng)常有香客問我,道長薄风,這世上最難降的妖魔是什么饵较? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮遭赂,結果婚禮上循诉,老公的妹妹穿的比我還像新娘。我一直安慰自己嵌牺,他們只是感情好打洼,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布龄糊。 她就那樣靜靜地躺著,像睡著了一般募疮。 火紅的嫁衣襯著肌膚如雪炫惩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天阿浓,我揣著相機與錄音他嚷,去河邊找鬼。 笑死芭毙,一個胖子當著我的面吹牛筋蓖,可吹牛的內容都是我干的。 我是一名探鬼主播退敦,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼粘咖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侈百?” 一聲冷哼從身側響起瓮下,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钝域,沒想到半個月后讽坏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡例证,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年路呜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片织咧。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡胀葱,死狀恐怖,靈堂內的尸體忽然破棺而出烦感,到底是詐尸還是另有隱情巡社,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布手趣,位于F島的核電站,受9級特大地震影響肥荔,放射性物質發(fā)生泄漏绿渣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一燕耿、第九天 我趴在偏房一處隱蔽的房頂上張望中符。 院中可真熱鬧,春花似錦誉帅、人聲如沸淀散。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽档插。三九已至慢蜓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間郭膛,已是汗流浹背晨抡。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留则剃,地道東北人耘柱。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像棍现,于是被迫代替她去往敵國和親调煎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內容

  • python Argparse模塊的使用 標簽:python 參考: Argparse Tutorial:http...
    初來的雨天閱讀 2,102評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理己肮,服務發(fā)現(xiàn)士袄,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • getopt:和C中的getopt()等價朴肺。optparse:2.7后已不推薦使用窖剑。argparse:基于optp...
    顧慎為閱讀 8,693評論 1 10
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法戈稿,內部類的語法西土,繼承相關的語法,異常的語法鞍盗,線程的語...
    子非魚_t_閱讀 31,632評論 18 399
  • (兒子作品需了,大概寫于13歲時) 說到?jīng)_突,就有無窮的話題般甲,隨意翻看微博肋乍,你就能知道中國這個國家,人與人的恩怨有多少...
    雪飛老師閱讀 495評論 0 0