外部直接執行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
測驗代碼:
#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:]的緣故是命令列第一個引數為檔案名本身,這里沒有意義
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/197475.html
標籤:其他
