Python 中的命令列引數
Manav Narula
2023年1月30日
2021年7月9日
命令列引數是在執行檔案時在命令列視窗中提供的那些值。它們很方便,因為它允許我們在執行程式時傳遞值。
在 Python 中,可以使用不同的模組來處理命令列引數,這將在下面討論。
在 Python 中使用 sys
模組處理命令列引數
sys.argv()
用於將命令列中提供的引數儲存在列表型別結構中。檔名被視為第一個引數。
例如,
import sys
print("Arguments without the script name ", (len(sys.argv)-1))
print("Arguments given ")
for i in range(1, len(sys.argv)):
print(sys.argv[i])
在上面的例子中,我們在執行時傳遞了一些引數並顯示了引數的總數和它們的值。
在 Python 中使用 getopt
模組處理命令列引數
getopt
模組還處理命令列引數。它允許我們驗證給定的值。我們可以提供帶有引數的值以及指令碼可以識別的選項字串。該模組與 sys 模組配合使用以獲得更好的處理。
getopt()
建構函式用於初始化解析引數的物件。當無法從引數列表中識別該選項時,它會返回 getopt.error
。
我們在下面的程式碼中使用它。
import getopt, sys
lst = sys.argv[1:]
options = "abc:"
long_options = ["A_Message", "B_Message", "C_Message"]
try:
arguments, values = getopt.getopt(lst, options, long_options)
for currentArgument, currentValue in arguments:
if currentArgument in ("-a", "--A_Message"):
print("Message A received")
elif currentArgument in ("-b", "--B_Message"):
print("Message B received")
elif currentArgument in ("-c", "--C_Message"):
print("Message C received")
except getopt.error as err:
print("Error")
在 Python 中使用 argparse
模組處理命令列引數
argparse 模組是迄今為止使用命令列引數最方便的模組。該模組提供了很大的靈活性,因為它可以處理位置引數、可選引數並指定它們的型別。
如果缺少某些引數,我們可以設定一些預設值,甚至顯示幫助訊息。
ArgumentParser()
函式建立一個解析器物件。parse.args()
函式從命令列讀取引數。
例如,
import argparse
parser = argparse.ArgumentParser(description = "Which Message?")
parser.add_argument("a")
parser.add_argument("b")
args = parser.parse_args()
print(args.a, args.b)
Author: Manav Narula
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn