Python 中的命令行参数

Manav Narula 2023年1月30日 2021年7月9日
  1. 在 Python 中使用 sys 模块处理命令行参数
  2. 在 Python 中使用 getopt 模块处理命令行参数
  3. 在 Python 中使用 argparse 模块处理命令行参数
Python 中的命令行参数

命令行参数是在运行文件时在命令行窗口中提供的那些值。它们很方便,因为它允许我们在执行程序时传递值。

在 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 Narula avatar Manav Narula avatar

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