Python 命令行參數 | 菜鳥教程

Python 命令行參數

Python 基礎語法

Python 提供了 getopt 模塊來獲取命令行參數。

$ python test.py arg1 arg2 arg3

Python 中也可以所用 syssys.argv 來獲取命令行參數:

  • sys.argv 是命令行參數列表。

  • len(sys.argv) 是命令行參數個數。

  • 註:sys.argv[0] 表示腳本名。

    實例

    test.py 文件代碼如下:

    #!/usr/bin/python# -*- coding: UTF-8 -*-import sysprint "參數個數為:", len(sys.argv), "個參數。"print "參數列表:", str(sys.argv)

    執行以上代碼,輸出結果為:

    $ python test.py arg1 arg2 arg3參數個數為: 4 個參數。參數列表: ["test.py", "arg1", "arg2", "arg3"]


    getopt模塊

    getopt模塊是專門處理命令行參數的模塊,用於獲取命令行選項和參數,也就是sys.argv。命令行選項使得程序的參數更加靈活。支持短選項模式(-)和長選項模式(--)。

    該模塊提供了兩個方法及一個異常處理來解析命令行參數。

    getopt.getopt 方法

    getopt.getopt 方法用於解析命令行參數列表,語法格式如下:

    getopt.getopt(args, options[, long_options])

    方法參數說明:

  • args: 要解析的命令行參數列表。

  • options: 以列表的格式定義,options後的冒號(:)表示該選項必須有附加的參數,不帶冒號表示該選項不附加參數。

  • long_options: 以字元串的格式定義,long_options 後的等號(=)表示如果設置該選項,必須有附加的參數,否則就不附加參數。

  • 該方法返回值由兩個元素組成: 第一個是 (option, value) 元組的列表。 第二個是參數列表,包含那些沒有"-"或"--"的參數。

  • 另外一個方法是 getopt.gnu_getopt,這裡不多做介紹。


    Exception getopt.GetoptError

    在沒有找到參數列表,或選項的需要的參數為空時會觸發該異常。

    異常的參數是一個字元串,表示錯誤的原因。屬性 msgopt 為相關選項的錯誤信息。

    實例

    假定我們創建這樣一個腳本,可以通過命令行向腳本文件傳遞兩個文件名,同時我們通過另外一個選項查看腳本的使用。腳本使用方法如下:

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

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

    #!/usr/bin/python# -*- coding: UTF-8 -*-import sys, getoptdef main(argv): inputfile = "" outputfile = "" try: opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="]) except getopt.GetoptError: print "test.py -i <inputfile> -o <outputfile>" sys.exit(2) for opt, arg in opts: if opt == "-h": 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 "輸出的文件為:", outputfileif __name__ == "__main__": main(sys.argv[1:])

    執行以上代碼,輸出結果為:

    $ python test.py -husage: test.py -i <inputfile> -o <outputfile>$ python test.py -i inputfile -o outputfile輸入的文件為: inputfile輸出的文件為: outputfile

    Python 基礎語法
    推薦閱讀:

    Python裝飾器是什麼?有什麼價值?
    從美食的角度看東莞(數據來源:大眾點評)
    黃哥Python每日新聞(2017-8-9)
    tornado 最近的4.0版本進行了較大的更新,這個大版本有哪些亮點?
    各種編程學習資源匯總

    TAG:Python | 菜鳥 | 教程 | 參數 |