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