Python之OptionParser模塊使用詳解
介紹
OptionParser是一個更方便、更靈活、更強(qiáng)大的用于解析命令行選項的庫,使用更具聲明性的命令行分析樣式:創(chuàng)建 OptionParser ,用選項填充它,并解析命令行。 optparse 允許用戶以常規(guī)GNU/POSIX語法指定選項,并另外為您生成用法和幫助消息
基本用法
①from optparse import OptionParser #導(dǎo)入模塊 ②parser = OptionParser(...) #創(chuàng)建實例 ③parser.add_option(...) #添加命令行參數(shù) ④(options, args) = parser.parse_args() #得到解析后的options對象,查看用戶的輸入
參數(shù)選項
OptionParser()
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!") #usage 打印用法 例如: Usage: test.py [options] arg #version --version時輸出版本信息 例如:test.py 1.0 #description 描述信息 --help時輸出 例如:hello OptionParser!
parser.add_option()
parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="這是幫助文檔")
#action 指明optparser解析參數(shù)時該如何處理。默認(rèn)是store
- store 表示命令行參數(shù)的值保存在options對象中。
- store_false 中存在 -v verbose 將會返回false,也就是說verbose的值與-v后的具體參數(shù)具體項無關(guān),只與-v是否存在有關(guān)
- store_true 與action="store_false"類似,只有其中有參數(shù)-v存在時,則verbose的值為true,如果-v不存在,那么verbose的值為None
#type 默認(rèn)是string,也可以是 int、float等
#dest 指定接收用戶輸入的值,當(dāng)action="store"時可以將dest接收的值進(jìn)打印或比較等其他處理
例如:
from optparse import OptionParser
def main():
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="這是幫助文檔")
parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
(options, args) = parser.parse_args()
print(options.filename)
if __name__ == "__main__":
main()
#===test.py -f 1輸出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f 1
1
#default 設(shè)置默認(rèn)值;如果在命令行上未看到該選項,則default的值為用于該選項的默認(rèn)值。
#help --help時 輸出該選項的解釋說明
例如:
parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="這是幫助文檔")
#===test.py -h輸出===#
-v, --verbose 這是幫助文檔
生成幫助
#!/usr/bin/env python3.8.8
# -*- encoding: utf-8 -*-
'''
@File : test.py
@Time : 2022/02/08 11:48:40
@Author : 熱氣球
@Version : 1.0
@Contact : 17695691664@163.com
'''
from optparse import OptionParser
def main():
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="這是幫助文檔")
parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error("incorrect number of arguments")
if options.verbose:
print("reading %s..." % options.filename)
if __name__ == "__main__":
main()
#===test.py -h輸出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py --help
Usage: test.py [options] arg
hello OptionParser!
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-f FILENAME, --file=FILENAME
read data from FILENAME
-v, --verbose 這是幫助文檔
-q, --quiet
PS C:\Users\Administrator>
錯誤提示
此示例拿于官網(wǎng)手冊
#!/usr/bin/env python3.8.8
# -*- encoding: utf-8 -*-
'''
@File : test.py
@Time : 2022/02/08 11:48:40
@Author : 熱氣球
@Version : 1.0
@Contact : 17695691664@163.com
'''
from optparse import OptionParser
def main():
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
parser.add_option("-v", "--verbose",action="store_true", dest="verbose")
parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error("incorrect number of arguments")
if options.verbose:
print("reading %s..." % options.filename)
if __name__ == "__main__":
main()
#---示例代碼解釋---#
-v參數(shù) 當(dāng)指定-v時才可以運(yùn)行此代碼,因為-v存在時if options.verbose: 為True
-q參數(shù) 當(dāng)指定-q時表明退出執(zhí)行,因為action="store_false",所以-q不存在,if options.verbose: 為True
-f參數(shù) 指定filename,需要配合-v參數(shù)一起使用; -v參數(shù)的具體選項值隨意設(shè)置,存在即可。
#===test.py -v True -f 1輸出===#
reading 1...
#===test.py -f 1輸出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f 1
Usage: cov-run-desktop-test.py [options] arg
cov-run-desktop-test.py: error: incorrect number of arguments
提示參數(shù)不夠
#===test.py -f 輸出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f
Usage: cov-run-desktop-test.py [options] arg
cov-run-desktop-test.py: error: -f option requires 1 argument
錯誤:-f選項需要1個參數(shù)
代碼示例
#!/usr/bin/env python3.8.8
# -*- encoding: utf-8 -*-
'''
@File : test.py
@Time : 2022/02/08 11:48:40
@Author : 熱氣球
@Version : 1.0
@Contact : 17695691664@163.com
'''
from optparse import OptionParser
def main():
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
parser.add_option("-v", "--verbose",action="store", default='reqiqiu',dest="verbosename",help="這是幫助文檔")
parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error("incorrect number of arguments")
if options.verbose:
print("reading %s..." % options.filename)
if __name__ == "__main__":
main()
#===test.py -h輸出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -h
Usage: test.py [options] arg
hello OptionParser!
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-f FILENAME, --file=FILENAME
read data from FILENAME
-v VERBOSENAME, --verbose=VERBOSENAME
這是幫助文檔
-q, --quiet
#===test.py -v輸出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py --version
test.py 1.0
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Pandas中DataFrame.head()函數(shù)的具體使用
DataFrame.head()是Pandas庫中一個非常重要的函數(shù),用于返回DataFrame對象的前n行,本文主要介紹了Pandas中DataFrame.head()函數(shù)的具體使用,感興趣的可以了解一下2024-07-07
python開發(fā)之thread實現(xiàn)布朗運(yùn)動的方法
這篇文章主要介紹了python開發(fā)之thread實現(xiàn)布朗運(yùn)動的方法,實例分析了Python基于多線程實現(xiàn)繪圖的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
連接pandas以及數(shù)組轉(zhuǎn)pandas的方法
今天小編就為大家分享一篇連接pandas以及數(shù)組轉(zhuǎn)pandas的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python實現(xiàn)統(tǒng)計給定字符串中重復(fù)模式最高子串功能示例
這篇文章主要介紹了Python實現(xiàn)統(tǒng)計給定字符串中重復(fù)模式最高子串功能,涉及Python針對字符串的遍歷、排序、切片、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
django創(chuàng)建簡單的頁面響應(yīng)實例教程
這篇文章主要給大家介紹了關(guān)于django如何創(chuàng)建簡單的頁面響應(yīng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
matplotlib.pyplot畫圖 圖片的二進(jìn)制流的獲取方法
今天小編就為大家分享一篇matplotlib.pyplot畫圖 圖片的二進(jìn)制流的獲取方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05

