Python命令行解析工具argparse模塊
argparse模塊簡介
argparse模塊是一個python標(biāo)準(zhǔn)庫,它主要用于對用戶從客戶端輸入的命令進行解析,這使得編寫用戶友好的命令行接口變得非常容易。
程序只需要定義好用戶可以從終端可以輸入哪些參數(shù),以及參數(shù)對應(yīng)的含義、數(shù)據(jù)類型即可,然后argparse將負(fù)責(zé)從sys.argv中解析出這些參數(shù)。argparse模塊還會自動生成幫助信息和使用信息并且當(dāng)用戶賦給程序非法的參數(shù)的時候會出現(xiàn)友好的錯誤提示信息。
使用方法
(1)導(dǎo)入argparse模塊
(2)創(chuàng)建一個解析器對象
(3)使用對象內(nèi)置的add_argument()方法添加需要關(guān)注的命令參數(shù)和選項
(4)之后調(diào)用parse_args()方法解析命令即可
示例:
import argparse #導(dǎo)入argparse該模塊; parser = argparse.ArgumentParser() #創(chuàng)建一個解析器對象 parser.add_argument() #添加令行參數(shù)和選項,每一個add_argument方法對應(yīng)一個參數(shù)或選項; args=parser.parse_args() #調(diào)用parse_args()方法進行解析,解析成功之后即可使用
ArgumentParser對象介紹
class argparse.ArgumentParser(
prog=None,
usage=None,
description=None,
epilog=None,
parents=[],
formatter_class=argparse.
HelpFormatter,
prefix_chars='-',
fromfile_prefix_chars=None,
argument_default=None,
conflict_handler='error',
add_help=True)參數(shù)說明:
| 參數(shù) | 描述 |
| prog | 程序的名字(默認(rèn):sys.argv[0]) |
| usage | 描述程序用法的字符串(默認(rèn):從解析器的參數(shù)生成) |
| description | 參數(shù)幫助信息之前的文本(默認(rèn):空) |
| epilog | 參數(shù)幫助信息之后的文本(默認(rèn):空) |
| parents | ArgumentParser 對象的一個列表,這些對象的參數(shù)應(yīng)該包括進去 |
| formatter_class | 定制化幫助信息的類 |
| prefix_chars | 可選參數(shù)的前綴字符集(默認(rèn):‘-‘) |
| fromfile_prefix_chars | 額外的參數(shù)應(yīng)該讀取的文件的前綴字符集(默 |
| argument_default | 參數(shù)的全局默認(rèn)值(默認(rèn):None) |
| conflict_handler | 解決沖突的可選參數(shù)的策略(通常沒有必要) |
| add_help | 給解析器添加-h/–help 選項(默認(rèn):True) |
add_argument函數(shù)簡介
ArgumentParser.add_argument(
name or flags...
[, action]
[, nargs]
[, const]
[, default]
[, type]
[, choices]
[, required]
[, help]
[, metavar]
[, dest])參數(shù)說明
| 參數(shù) | 描述 |
| name or flags | 選項字符串的名字或者列表,例如foo 或者-f, –foo |
| action | 在命令行遇到該參數(shù)時采取的基本動作類型。 |
| nargs | 應(yīng)該讀取的命令行參數(shù)數(shù)目。 |
| const | 某些action和nargs選項要求的常數(shù)值。 |
| default | 如果命令行中沒有出現(xiàn)該參數(shù)時的默認(rèn)值。 |
| type | 命令行參數(shù)應(yīng)該被轉(zhuǎn)換成的類型。 |
| choices | 參數(shù)可允許的值的一個容器。 |
| required - 該命令行選項是否可以省略(只針對可選參數(shù))。 | |
| help | 參數(shù)的簡短描述。 |
| metavar | 參數(shù)在幫助信息中的名字。 |
| dest | 給parse_args()返回的對象要添加的屬性名稱。 |
其中“type”、“help”、“action”、“default”、“name ”、“dest”使用最為頻繁
實戰(zhàn)演示
(1)可選參數(shù)
代碼如下:
import argparse
parser=argparse.ArgumentParser()
parser.add_argument("-display",help="display the message!")
args=parser.parse_args()
if args.display:
print "Display is trun on!"運行結(jié)果:

注:可選參數(shù)可以在add_argment("這里如果加上“-”,則說明是可選的,否則是必須的")定義
(2)短選項
有時候?qū)懸粋€匹配項的時候還需要寫全拼,實在是有些麻煩,在Linux中大多數(shù)的交互命令都有簡寫,那么我們也可以來進行設(shè)置短選項
代碼如下:
import argparse
parser=argparse.ArgumentParser()
parser.add_argument("-d","--display",help="display the message!",action="store_true")
args=parser.parse_args()
if args.display:
print "Display is trun on!"
(3)結(jié)合位置參數(shù)與可選參數(shù)
代碼如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v", "--verbose", action="store_true",
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbose:
print "the square of {} equals {}".format(args.square, answer)
else:
print answer 運行結(jié)果如下:

到此這篇關(guān)于Python命令行解析工具argparse模塊的文章就介紹到這了,更多相關(guān)Python的argparse模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python成功解決讀文件出現(xiàn):IOError:?[Errno?0]?Error的錯誤
在Python編程中,處理文件是常見的任務(wù)之一,但偶爾也會遇到各種錯誤,包括IOError,盡管Python?3.x中IOError已被OSError和FileNotFoundError等更具體的異常所取代,由于[Errno?0]不直接指向具體的錯誤類型,我們將討論一系列可能導(dǎo)致IOError的常見情況,需要的朋友可以參考下2024-07-07
python numpy.ndarray中如何將數(shù)據(jù)轉(zhuǎn)為int型
這篇文章主要介紹了python numpy.ndarray中如何將數(shù)據(jù)轉(zhuǎn)為int型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
python機器學(xué)習(xí)實戰(zhàn)之樹回歸詳解
這篇文章主要為大家詳細介紹了python機器學(xué)習(xí)實戰(zhàn)之樹回歸的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Jupyter Notebook遠程登錄及密碼設(shè)置操作
今天小編就為大家分享一篇Jupyter Notebook遠程登錄及密碼設(shè)置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python抓取網(wǎng)頁時字符集轉(zhuǎn)換問題處理方案分享
python學(xué)習(xí)過程中發(fā)現(xiàn)英文不好學(xué)起來挺困難的,其中小弟就遇到一個十分蛋疼的問題,百度了半天就沒找到解決辦法~囧~摸索了半天自己解決了,記錄下來與君共勉。2014-06-06

