Python 獲取命令行參數(shù):getopt模塊

引用

Python 命令行參數(shù),修改并增加了部分內(nèi)容,原文鏈接地址ttp://www.runoob.com/python/python-command-line-arguments.html,如涉及版權(quán)問(wèn)題請(qǐng)及時(shí)聯(lián)系我!

Python 提供了 getopt 模塊來(lái)獲取命令行參數(shù),getopt模塊是專(zhuān)門(mén)處理命令行參數(shù)的模塊,用于獲取命令行選項(xiàng)和參數(shù)。下面通過(guò)實(shí)際例子來(lái)詳細(xì)解釋如何操作。

類(lèi)似于下面包含參數(shù)的命令行

例1- $ python test.py -i input.txt -o output.txt middle.txt final.txt
例2- $ python test.py --ifile=input.txt --ofile=output.txt middle.txt 

getopt.getopt 方法函數(shù)原型:

getopt.getopt(args, shortopts, longopts=[])

方法參數(shù)說(shuō)明:

  • ** args:args為需要解析的參數(shù)列表。一般使用sys.argv[1:]**,這樣可以過(guò)濾掉第一個(gè)參數(shù)(ps:第一個(gè)參數(shù)是腳本的名稱(chēng),即例子中的test.py文件名,它不應(yīng)該作為參數(shù)進(jìn)行解析).
  • ** shortopts:**簡(jiǎn)寫(xiě)參數(shù)列表,短格式 (-) ,冒號(hào)(:)表示該選項(xiàng)必須有附加的參數(shù),不帶冒號(hào)表示該選項(xiàng)不附加參數(shù).
  • ** longopts:**長(zhǎng)參數(shù)列表,長(zhǎng)格式(--) ,等號(hào)(=)表示如果設(shè)置該選項(xiàng),必須有附加的參數(shù),否則就不附加參數(shù)。
方法返回值:
  • opts:分析出的(option, value)列表對(duì)。
  • args:不屬于格式信息的剩余命令行參數(shù)列表。
實(shí)例

假定我們創(chuàng)建這樣一個(gè)腳本,可以通過(guò)命令行向腳本文件傳遞兩個(gè)文件名,同時(shí)我們通過(guò)另外一個(gè)選項(xiàng)查看腳本的使用。腳本使用方法如下:

usage: test.py -i <inputfile> -o <outputfile>

test.py 文件代碼如下所示:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys, getopt
def main(argv): 
    inputfile = '' 
    outputfile = '' 
    try: 
        opts, args = getopt.getopt(argv,"hi:o:",["help","ifile=","ofile="])       
    except getopt.GetoptError: 
        sys.exit(2) 
    for opt, arg in opts: 
        if opt in ("-h","--help"): 
            print 'test.py -i <inputfile> -o <outputfile>' 
            sys.exit() 
        elif opt in ("-i", "--ifile"): 
            inputfile = arg 
        elif opt in ("-o", "--ofile"): 
            outputfile = arg 
    print '輸入的文件為:', inputfile 
    print '輸出的文件為:', outputfile

if __name__ == "__main__": 
    main(sys.argv[1:])
執(zhí)行以上代碼,輸出結(jié)果為:
$ python test.py -h
usage: test.py -i <inputfile> -o <outputfile>

$ python test.py -i input.txt -o output.txt middle.txt final.txt
輸入的文件為: input.txt
輸出的文件為: output.txt

$ python test.py --ifile=input.txt --ofile=output.txt middle.txt final.txt
輸入的文件為: input.txt
輸出的文件為: output.txt
對(duì)代碼的理解:
  • main(sys.argv[1:])
    調(diào)用main函數(shù),getopt.getopt獲取命令行參數(shù)-i input.txt -o output.txt middle.txt final.txt,

  • 返回值opts是個(gè)包含元祖的列表,每個(gè)元祖是分析出來(lái)的格式信息,比如 [('-i','input.txt'),('-o','output.txt')] ;

  • 返回值args是個(gè)列表,包含那些沒(méi)有‘-’或‘--’的參數(shù),比如:['middle.txt','final.txt']

  • "hi:o:"
    短格式 h 后面沒(méi)有冒號(hào):表示后面不帶參數(shù),i和 o后面有冒號(hào)表示后面需要參數(shù)

  • ["help","ifile=","ofile="]
    長(zhǎng)格式 help后面沒(méi)有等號(hào)=,表示后面不帶參數(shù),其他兩個(gè)后面有=,表示后面需要參數(shù)

注意:定義命令行參數(shù)時(shí),要先定義帶'-'選項(xiàng)的參數(shù),再定義沒(méi)有‘-’的參數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,194評(píng)論 2 33
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,525評(píng)論 19 139
  • getopt:和C中的getopt()等價(jià)。optparse:2.7后已不推薦使用。argparse:基于optp...
    顧慎為閱讀 8,813評(píng)論 1 10
  • 哪里有它哪里就有歡樂(lè)熊本縣de吉祥物Kumamon靠著蠢萌搞怪的個(gè)性俘獲了全人類(lèi)這大概是本世紀(jì)最蠢萌蠢萌的吉祥物了...
    WankaTravel閱讀 630評(píng)論 0 0
  • 時(shí)針指在四點(diǎn)鐘方向,對(duì)面樓梯間的燈光都亮著。外面卻是漆黑一片。城里的人都還在睡夢(mèng)中,也許有些早起的環(huán)衛(wèi)工人拿著掃帚...
    雪過(guò)天晴_99a2閱讀 420評(píng)論 0 0

友情鏈接更多精彩內(nèi)容