python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python Argparse

使用Python中的Argparse实现将列表作为命令行参数传递

作者:鲸落_

Argparse 是一个 Python 库,用于以用户友好的方式解析命令行参数,本文我们将讨论如何使用 Python 中的 Argparse 库将列表作为命令行参数传递,感兴趣的可以了解下

Argparse 是一个 Python 库,用于以用户友好的方式解析命令行参数。它可以轻松编写用户友好的命令行界面,并且广泛应用于Python应用程序中。在本教程中,我们将讨论如何使用 Python 中的 Argparse 库将列表作为命令行参数传递。

使用 Argparse 将列表作为命令行参数传递

要使用Argparse 库将 Python 列表作为命令行参数传递,我们将在 add_argument() 方法中使用“nargs”参数。“nargs”代表“参数数量”,它告诉 argparse 特定选项应该期望多少个参数。

使用 Argparse 将列表作为命令行参数传递的步骤

让我们看看使用 Python 中的 Argparse 库将列表作为命令行参数传递所涉及的步骤。

第1步: 导入所需模块

要使用argparse,您需要导入argparse模块。您可以通过在 Python 脚本的开头添加以下行来完成此操作:

import argparse

第 2 步: 创建参数解析器

接下来,通过调用 ArgumentParser() 方法创建一个参数解析器对象:

parser = argparse.ArgumentParser()

第 3 步: 添加参数

使用 add_argument() 方法将参数添加到参数解析器。使用type参数指定参数的数据类型,列表可以是任何类型,字符串,整数等。

parser.add_argument("--numbers", type=int)

第四步: 解析参数

最后,通过调用参数解析器对象上的 parse_args() 方法来解析命令行参数。这将返回一个包含已解析参数的对象。

args = parser.parse_args()

第 5 步: 访问列表

您可以使用 args 对象的“numbers”属性访问作为“–numbers”参数传递的整数列表。

print(args.numbers)

传递字符串列表

在此示例中,list_of_strings 函数将字符串作为输入并返回字符串列表。add_argument的类型参数设置为list_of_strings,因此当调用parse_args时,-str-list的字符串值被转换为字符串列表。

import argparse
# 为字符串列表定义自定义参数类型
def list_of_strings(arg):
	return arg.split(',')
# 创建ArgumentParser对象
parser = argparse.ArgumentParser()
# 为字符串列表添加参数
parser.add_argument('--str-list', type=list_of_strings)
# 分析命令行参数
args = parser.parse_args()
# 使用脚本中的字符串列表
print(args.str_list)

输出:

您可以使用以下命令运行此脚本。这里的“script.py”指的是保存的Python文件的名称。

python script.py --str-list foo,bar,baz

注意: 确保列表项之间没有空格,否则可能会生成错误。我们将在接下来的示例中了解如何解决此错误。

传递整数列表

在此示例中,list_of_ints 函数采用字符串作为输入并返回 Python 整数列表。add_argument的类型参数设置为list_of_ints,因此当调用parse_args时,-int-list的字符串值被转换为整数列表。

import argparse
# 为整数列表定义自定义参数类型
def list_of_ints(arg):
	return list(map(int, arg.split(',')))
# 创建ArgumentParser对象
parser = argparse.ArgumentParser()
# 为整数列表添加参数
parser.add_argument('--int-list', type=list_of_ints)
# 分析命令行参数
args = parser.parse_args()
# 在脚本中使用整数列表
print(args.int_list)

输出:

您可以使用以下命令运行此脚本:

python script.py --int-list 1,2,3,4,5,6

将列表作为命令行参数传递

让我们看一些在 Python 中将列表作为命令行参数传递的示例。

示例 1:使用 nargs='+' 传递一个或多个值

在此示例中,我们使用“add_argument”方法添加一个名为“my_list”的参数。“metavar”参数用于指定使用消息中的参数名称。“type”参数设置为“str”,因为我们希望列表是字符串列表。“nargs”参数设置为“+”表示该参数可以采用一个或多个值。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('my_list', metavar='N', type=str, nargs='+',
					help='a list of strings')
args = parser.parse_args()
print(args.my_list)

输出:

仅传递一个参数:

python my_script.py juejin

传递多个参数:

python my_script.py jue jin cn

示例 2:使用 nargs='*' 传递零个或多个值

在此示例中,“nargs”参数设置为“*”以指示该参数可以采用零个或多个值。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('my_list', metavar='N', type=str, nargs='*',
					help='a list of strings')
args = parser.parse_args()
print(args.my_list)

输出:

传递零参数:

python my_script.py

示例 3:传递可选参数

在此示例中,我们提供了两个参数,一个是强制性的,另一个是可选的。我们将“required”参数设置为“True”,这意味着它是强制性的。在第二个参数中,我们没有定义必需的参数,这意味着它是一个可选参数。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--string1', type=str, required=True)
parser.add_argument('--string2', type=str)
args = parser.parse_args()
if args.string2:
	print(args.string1, args.string2)
else:
	print(args.string1)

输出:

当两个参数都被定义时:

python my_script.py --string1 Hello --string2 world

当可选参数未定义时:

python my_script.py --string1 Hello

到此这篇关于使用Python中的Argparse实现将列表作为命令行参数传递的文章就介绍到这了,更多相关Python Argparse内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文