Python指令碼的常見引數獲取和處理方式

MHyourh發表於2020-12-27

平常寫 python 指令碼時會有一些從命令列獲取引數的需求,這篇文章記錄下常見的引數獲取和處理方式。

1.使用 args 獲取引數

使用 sys.argv[] 可以接收指令碼的引數,得到一個列表型別,列表第一個元素是指令碼名稱,通過 sys.argv[1:] 得到命令列傳進來的所有引數。

程式碼示例:

test_args.py

import sys
argv = sys.argv[1:]
print("args==argv==", argv)

程式碼執行效果:
在這裡插入圖片描述
2.使用 getopt 處理命令列傳入的引數

getopt 是專門用來處理命令列引數,使用格式大概為getopt(args, shortopts, longopts = []),其中引數 args 一般是sys.argv[1:], shortopts 是短格式引數 (-),longopts 是長格式引數(–)

程式碼示例:

'''
遇到問題沒人解答?小編建立了一個Python學習交流QQ群:778463939
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
test_args.py

argv = sys.argv[1:]
print("args==argv==", argv)
options, args = getopt.getopt(sys.argv[1:], "hd:n:", ["help", "date=", "name="])
print("args==getopt==",options, "options=====", args)

程式碼執行結果:
在這裡插入圖片描述
3.標準庫 argsparse

argsparse 是 python 的命令列解析的標準模組,內建於python,不需要安裝。這個庫可以讓我們直接在命令列中就可以向程式中傳入引數並讓程式執行。

程式碼示例:

'''
遇到問題沒人解答?小編建立了一個Python學習交流QQ群:778463939
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
test_args.py
import argparse
parser = argparse.ArgumentParser(description='ArgUtils')
parser.add_argument('-d', type=str, default='000000', help="data date")
parser.add_argument('-a', type=str, default=None, help="agent_id_from_platform id")
args = parser.parse_args()

add_argument函式中,第一個引數是指令碼引數傳入名稱;type 是限制傳入引數的型別;default 為引數設定預設值;required 設定引數是否為必傳。

程式碼執行效果:
在這裡插入圖片描述
總得來說,args相容性比較強,可以接收任意方式的傳參,getopt 對傳入引數進行了分組,argparse 則使傳入的引數可讀性更高,支援的功能多一些。

相關文章