Python 命令行參數 | 菜鳥教程
Python 基礎語法
Python 提供了 getopt 模塊來獲取命令行參數。
$ python test.py arg1 arg2 arg3
Python 中也可以所用 sys 的 sys.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
在沒有找到參數列表,或選項的需要的參數為空時會觸發該異常。
異常的參數是一個字元串,表示錯誤的原因。屬性 msg 和 opt 為相關選項的錯誤信息。
實例假定我們創建這樣一個腳本,可以通過命令行向腳本文件傳遞兩個文件名,同時我們通過另外一個選項查看腳本的使用。腳本使用方法如下:
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版本進行了較大的更新,這個大版本有哪些亮點?
※各種編程學習資源匯總