外部直接執行python文件時,咱們有時須要得到命令行的參數python
得到命令行參數的兩種方式linux
一、經過sys.argv學習
sys.argv:得到一個參數列表,第一個值爲文件名自己,經過sys.argv[1]得到第文件名後的第一個參數 ,多個參數使用空格隔開測試
測試代碼:命令行
import sys print(sys.argv) print(len(sys.argv)) print(len(sys.argv[1]))
測試數據:code
python3 test.py 第一個參數 第二個參數
執行結果:文檔
['test.py', '第一個參數', '第二個參數'] 3 5 [] ['第一個參數', '第二個參數']
二、經過getopt()得到參數值get
若是命令行須要經過linux那中指定參數名的方法運行,能夠使用getopt()來得到參數內容input
命令【getopt.getopt(參數列表,"短選項參數",[長選項參數])】
參數有兩種維度區分:短選項,長選項;帶參數值(開關)和不帶參數值源碼
短選項參數(命令行使用-參數名):由1個字母組成,若是字母后面跟冒號:表示這個參數須要有參數值,不然表示不輸入參數值
例如:io:
表示入參要輸入-i -o=xxx
長選項參數(命令行使用--參數名):由[參數名=]表示,有值的參數必定要寫=,不然會拋錯
例如:["help","input=","output="]
表示入參要輸入 --help --input=xxx --output=xxx
測試代碼:
#Python學習交流羣:778463939 import getopt import sys opts,args=getopt.getopt(sys.argv[1:],"i:ho:",["help","input=","output="]) print(opts) print(args) for opts,arg in opts: print(opts) if opts=="-h" or opts=="--help": print("我只是一個說明文檔") elif opts=="-i" or opts=="--input": print("我只是輸入,輸入內容以下:") print(arg) elif opts=="-o" or opts=="--output": print("我只是輸出,輸出內容以下:") print(arg)
測試數據:
python3 test.py -h -o=輸出 --input=輸入 最後一個參數
測試結果:
[('-h', ''), ('-o', '=輸出'), ('--input', '輸入')] ['最後一個參數'] -h 我只是一個說明文檔 -o 我只是輸出,輸出內容以下: =輸出 --input 我只是輸入,輸入內容以下: 輸入
說明:使用getopt()須要注意一下,不能把未定義的參數放到短選項和長選項的前面,不然-h --help這種不能讀取到參數值(源碼中不是很嚴謹,遇到這種狀況直接就break了),放到後面能夠,也能經過args獲取到
getopt()中第一個參數寫sys.argv[1:]的緣故是命令行第一個參數爲文件名自己,這裏沒有意義