首頁 > 軟體

Python之OptionParser模組使用詳解

2022-02-09 10:00:33

介紹

OptionParser是一個更方便、更靈活、更強大的用於解析命令列選項的庫,使用更具宣告性的命令列分析樣式:建立 OptionParser ,用選項填充它,並解析命令列。 optparse 允許使用者以常規GNU/POSIX語法指定選項,並另外為您生成用法和幫助訊息

基本用法

①from optparse import OptionParser #匯入模組
②parser = OptionParser(...)  #建立範例
③parser.add_option(...) #新增命令列引數
④(options, args) = parser.parse_args() #得到解析後的options物件,檢視使用者的輸入

引數選項

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解析引數時該如何處理。預設是store
 - store 表示命令列引數的值儲存在options物件中。
 - store_false 中存在 -v verbose 將會返回false,也就是說verbose的值與-v後的具體引數具體項無關,只與-v是否存在有關
 - store_true  與action="store_false"類似,只有其中有引數-v存在時,則verbose的值為true,如果-v不存在,那麼verbose的值為None
#type 預設是string,也可以是 int、float等
#dest 指定接收使用者輸入的值,當action="store"時可以將dest接收的值進列印或比較等其他處理
例如:
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:UsersAdministrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f 1
1
#default 設定預設值;如果在命令列上未看到該選項,則default的值為用於該選項的預設值。
#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:UsersAdministrator> & 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:UsersAdministrator>

錯誤提示

此範例拿於官網手冊

#!/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引數 當指定-v時才可以執行此程式碼,因為-v存在時if options.verbose: 為True
-q引數 當指定-q時表明退出執行,因為action="store_false",所以-q不存在,if options.verbose: 為True
-f引數 指定filename,需要配合-v引數一起使用; -v引數的具體選項值隨意設定,存在即可。

#===test.py -v True -f 1輸出===#  
reading 1...
#===test.py -f 1輸出===#  
PS C:UsersAdministrator> & 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
提示引數不夠
#===test.py -f 輸出===#
PS C:UsersAdministrator> & 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個引數

程式碼範例

#!/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:UsersAdministrator> & 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:UsersAdministrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py --version
test.py 1.0

總結

本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!      


IT145.com E-mail:sddin#qq.com