📜  从命令行在 python 中传递参数作为键值 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:21:56.620000             🧑  作者: Mango

从命令行在 Python 中传递参数作为键值 - TypeScript

在编写 Python 应用程序时,通常需要从命令行中获取参数,这些参数可以是键值对形式,用于指定应用程序的配置或执行不同的操作。在本篇文章中,我们将学习如何在 Python 中解析命令行参数并将其作为键值对形式进行使用。

解析命令行参数

在 Python 中,我们可以使用 argparse 模块来解析命令行参数。下面是一个简单的示例程序:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--name', help='your name')
parser.add_argument('--age', help='your age')
args = parser.parse_args()

print(f'Hello {args.name}, you are {args.age} years old!')

在上面的程序中,我们首先导入了 argparse 模块,并创建了一个 ArgumentParser 对象。然后,我们定义了两个参数 --name--age,并使用 help 参数为它们添加帮助信息。最后,我们调用了 parse_args() 方法来解析命令行参数,并使用返回的 args 对象来输出欢迎消息。

假设我们使用以下命令运行程序:

python program.py --name Alice --age 20

则程序将输出:

Hello Alice, you are 20 years old!
传递参数作为键值对

除了直接使用参数名称和值,我们还可以将参数作为键值对形式进行传递。例如,以下命令可以传递一个包含多个参数键值对的 JSON 对象:

python program.py --config '{"name": "Alice", "age": 20}'

为了解析这种情况下的参数,我们需要在程序中进行一些额外的处理。下面是一个示例程序:

import argparse
import json

parser = argparse.ArgumentParser()
parser.add_argument('--config', help='JSON object with configuration')
args, _ = parser.parse_known_args()

config = json.loads(args.config.replace("'", '"')) if args.config else {}

print(f'Hello {config.get("name", "")}, you are {config.get("age", "")} years old!')

在上面的程序中,我们仍然使用 argparse 模块解析命令行参数,但我们使用 --config 参数来传递一个 JSON 对象。然后,我们使用 json.loads() 函数将 JSON 对象转换为 Python 字典,并使用 replace() 函数将单引号替换为双引号。最后,我们使用 get() 方法从字典中获取键值对,并进行欢迎消息输出。

假设我们使用以下命令运行程序:

python program.py --config "{'name': 'Alice', 'age': 20}"

则程序将输出:

Hello Alice, you are 20 years old!
总结

在本篇文章中,我们学习了如何在 Python 中使用 argparse 模块解析命令行参数,并将参数作为键值对形式传递。无论是直接传递参数名称和值,还是使用 JSON 对象传递参数,我们都可以方便地进行参数解析和使用。