使用 Python 解析命令行参数
在从命令行或 shell 运行 Python 程序时,我们可以将值以字符串的形式、技术上、参数或选项传递给程序。程序可以访问这些值并执行它,甚至使用这些值进行计算。
本文将讨论我们如何使用 Python 解析这些命令行参数并使用它们。
使用 optparse
模块解析命令行参数
optparse
模块是一个灵活方便的 Python 包,用于解析命令行选项。它内置于标准 Python 中。它使用声明式方法来解析命令行选项。要使用这个包,我们首先必须创建一个 OptionParser
类的对象,然后在 add_option()
方法的帮助下添加有关可能选项或参数的详细信息。add_option()
方法接受诸如 option
(选项名称)、type
(选项的数据类型)、help
(选项的帮助文本)和 default
(选项名称)等参数。选项的默认值(如果未在命令中指定)。要以字典的形式从命令行命令获取选项及其值,我们可以使用 parse_args()
方法。
让我们通过一个例子更好地理解这个库的使用。我们将实现一个简单的 Python 程序,该程序将检查三个选项:-a
、-b
和 -c
。这里,-a
和 -b
代表操作数,+
是运算符,而 -c
本质上是目标和。此外,代码将检查这些值,如果在命令行命令中找不到值,则为它们分配 0
值,最后,检查 a + b
是否等于 c
。此外,它还将以格式良好的字符串打印结果。
import optparse
parser = optparse.OptionParser()
parser.add_option("-a", help="First Number", default=0)
parser.add_option("-b", help="Second Number", default=0)
parser.add_option("-c", help="Sum", default=0)
options, args = parser.parse_args()
a = int(options.a)
b = int(options.b)
c = int(options.c)
s = a + b
print(f"{a} + {b} = {s} and {s} {'==' if s == c else '!='} {c}")
下面简单解释一下上面的代码。首先,它创建一个 OptionParser()
类对象并添加有关三个目标选项的信息; -a
、-b
和 -c
。然后它遍历命令行或 shell 命令来检查所需的选项。最后,它将所有值存储在单独的变量中,计算总和或 a + b
,并将其与目标总和或 c
进行比较。
让我们针对以下命令测试该程序。
python main.py -a 1 -b 2 -c 3
python main.py -a 1
python main.py -b 2
python main.py -c 3
python main.py 1 2 3
python main.py -a 1 2 3
python main.py 1 -b 2 3
python main.py 1 2 -c 3
python main.py 0 0 0
python main.py
输出:
1 + 2 = 3 and 3 == 3
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
0 + 0 = 0 and 0 == 0
从输出中,我们可以推断当没有向命令行或 shell 命令提供关键字选项或参数时,会考虑默认值。请参阅除第一个之外的测试命令(python main.py -a 1 -b 2 -c 3
)以获得更好的分析。