python獲得命令列輸入的引數的兩種方式
外部直接執行python檔案時,我們有時需要獲得命令列的引數
獲得命令列引數的兩種方式
1、通過sys.argv
sys.argv:獲得一個引數列表,第一個值為檔名本身,通過sys.argv[1]獲得第檔名後的第一個引數 ,多個引數使用空格隔開
測試程式碼:
import sys print(sys.argv) print(len(sys.argv)) print(len(sys.argv[1]))
測試資料:
python3 test.py 第一個引數 第二個引數
執行結果:
['test.py','第一個引數','第二個引數']
3
5
[]
['第一個引數','第二個引數']
2、通過getopt()獲得引數值
如果命令列需要通過linux那中指定引數名的方法執行,可以使用getopt()來獲得引數內容
命令【getopt.getopt(引數列表,"短選項引數",[長選項引數])】
引數有兩種維度區分:短選項,長選項;帶引數值(開關)和不帶引數值
短選項引數(命令列使用-引數名):由1個字母組成,如果字母后面跟冒號:表示這個引數需要有引數值,否則表示不輸入引數值
例如:io:
表示入參要輸入-i -o=xxx
長選項引數(命令列使用--引數名):由[引數名=]表示,有值的引數一定要寫=,否則會拋錯
例如:["help","input=","output="]
表示入參要輸入 --help --input=xxx --output=xxx
測試程式碼:
import getopt import sys opts,args=getopt.getopt(sys.argv[1:],"i:ho:",["help","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:]的緣故是命令列第一個引數為檔名本身,這裡沒有意義
總結
到此這篇關於python獲得命令列輸入的引數的兩種方式的文章就介紹到這了,更多相關python命令列引數內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!