检查Python中Argparse的论据

本教程将讨论argparse 的使用,我们将使用Python中的条件语句和参数名称检查argparse 中的参数是否存在。

在Python中检查argparse 的参数

Python的argparse 库在命令行中被用来编写用户友好界面。例如,我们可以使用脚本名称来运行一个脚本,并提供运行该脚本所需的参数。

我们可以在脚本文件的名称后面添加参数,argparse 库会将这些参数转换为对象,可以在脚本内部使用,以执行所需的任务。我们还可以在每个参数上附加帮助、使用和错误信息,以帮助用户。

例如,如果用户输入了一个无效的参数,argparse 库将显示一个错误和用户应该如何输入该参数。例如,让我们讨论一下argparse 库的一个简单例子。

请看下面的代码。

import argparse
My_parser = argparse.ArgumentParser()
My_parser.parse_args()

输出:

PS C:Usersammar> python test.py -h
usage: test.py [-h]
optional arguments:
  -h, --help  show this help message and exit

为了运行上述脚本,我们必须在cmd (命令提示符)中写上python test.py -h ,并确保Python被添加到系统path ,或者Windows上的环境变量。如果没有添加,我们可以使用python.exe 文件的完整路径。

我们还必须确保命令提示符的当前目录被设置为Python文件的目录;如果不是这样,我们必须提供Python文件的完整路径。

例如,让我们考虑我们必须把 Python 添加到系统中path ,而且我们也不在 Python 文件的当前目录中。我们必须把上面输出中的第一行改为下面这行。

& C:/Users/ammar/python.exe "c:/Users/ammar/test.py" -h

上面这行是在Windows PowerShell中测试的,对于cmd ,我们必须把这行开头的& 。在上面的输出中,我们可以观察到,只有一个参数用于帮助。

我们可以使用add_argument() 函数来在参数解析器中添加参数。我们可以设置两种类型的参数:一种是位置参数,另一种是可选参数。

我们必须在参数前使用单连字符- 或双连字符-- 来使其成为可选参数。我们还可以使用help 参数为一个参数添加帮助,并在add_argument() 函数内将其值设置为一个字符串。

我们可以使用ArgumentParser() 函数中的描述和后记参数在帮助部分前后添加文本。parse_args() 将命令提示符中传递的参数转换为对象,并将其返回,以后可以用来执行操作。

例如,让我们从用户那里获取一个字符串参数并显示出来。请看下面的代码。

import argparse
import string
My_parser = argparse.ArgumentParser(description="text before help.....", epilog="text after help.....")
My_parser.add_argument("firstArg", help="You can use string here", type=str)
My_args = My_parser.parse_args()
print(My_args.firstArg)

输出:

PS C:Usersammar> python test.py
usage: test.py [-h] firstArg
test.py: error: the following arguments are required: firstArg
PS C:Usersammar> python test.py -h
usage: test.py [-h] firstArg
text before help.....
positional arguments:
  firstArg    You can use string here
optional arguments:
  -h, --help  show this help message and exit
text after help.....
PS C:Usersammar> python test.py hello
hello

我们已经运行了上述Python文件三次,可以在输出中看到结果。第一次,我们在没有任何参数的情况下运行了该文件,一个错误信息说,需要一个参数,但没有通过。

第二次,我们用-h 参数运行了该脚本,该参数用于帮助,代码中显示了该脚本的用法和帮助。我们第三次使用命令提示符上显示的字符串运行了脚本。

我们可以使用add_argument() 函数的type 参数来设置参数的数据类型,比如str代表字符串,int代表整数数据类型。所有传递的参数都存储在My_args 变量中,我们可以使用这个变量来检查某个参数是否被传递。

检查argparse 可选参数是否被设置

在可选参数的情况下,如果没有传递参数,parse_args() 方法将返回该特定参数的None 。我们可以使用条件语句来检查参数是否是None ,如果参数是None ,那就意味着该参数没有被传递。

例如,让我们添加一个可选参数,并检查该参数是否通过,并相应地显示一个结果。请看下面的代码。

import argparse
import string
My_parser = argparse.ArgumentParser(description="text before help.....", epilog="text after help.....")
My_parser.add_argument("-firstArg", help="You can use string here", type=str)
My_args = My_parser.parse_args()
if My_args.firstArg is not None:
    print("Argument passed")
else:
    print("No Argument passed")

输出结果:

PS C:Usersammar> python test.py
No Argument passed
PS C:Usersammar> python test.py -firstArg hello
Argument passed

我们运行了上述脚本两次,有参数和无参数,并相应地显示了一个文本。我们可以使用is not Noneis None 语句与条件语句来确定一个参数是否被通过。

注意,如果是可选的参数,我们在传递参数之前还必须使用其名称。确保我们要检查的参数没有设置默认值,因为在默认值的情况下,该参数永远不会被None

例如,让我们在上面的代码中使用default 关键字在add_argument() 函数内添加一个默认值,并重复上述程序。请看下面的代码。

import argparse
import string
My_parser = argparse.ArgumentParser(description="text before help.....", epilog="text after help.....")
My_parser.add_argument("-firstArg", help="You can use string here", type=str, default="default_value")
My_args = My_parser.parse_args()
if My_args.firstArg is not None:
    print("Argument passed")
else:
    print("No Argument passed")

输出:

PS C:Usersammar> python test.py
Argument passed
PS C:Usersammar> python test.py -firstArg hello
Argument passed

我们可以在上面的输出中观察到,如果我们不传递一个参数,由于默认值的存在,代码仍然会显示传递的参数。我们可以无数次使用add_argument() 函数来添加多个参数。

如果我们想限制用户对输入的选择,我们可以在add_argument() 里面使用choices 参数,并将其值设置为一个只允许作为参数传递给脚本的值列表。