检查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 None
和is 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
参数,并将其值设置为一个只允许作为参数传递给脚本的值列表。