📜  使用Python的argparse创建命令行实用程序(1)

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

使用Python的argparse创建命令行实用程序

Python的argparse模块可以让开发者创建命令行实用程序,这样用户就可以在终端中通过输入命令来操作程序,提高了程序的可用性。本文将介绍如何使用argparse模块创建命令行实用程序。

安装argparse模块

argparse模块是Python的标准库,无需额外安装。如果你使用的是Python 2.x版本,可以通过以下命令安装argparse模块:

pip install argparse

以上命令在Python 3.x版本已经内置,无需安装。

创建一个简单的命令行实用程序

请先创建一个名为“example.py”的文件,内容如下所示:

import argparse

parser = argparse.ArgumentParser(description='This is a description of the program.')
parser.add_argument('--name', help='Name of the user')
args = parser.parse_args()

if args.name:
    print('Hello, {}!'.format(args.name))
else:
    print('Hello, World!')

在终端中运行该程序,输入以下命令:

python example.py --name John

然后将输出以下结果:

Hello, John!

以上程序中通过创建一个argument parser对象来定义了命令行实用程序中的选项和参数。该程序有一个--name选项,用于传递用户名。add_argument()方法用于添加选项和参数。

在运行程序时,使用parse_args()方法解析命令行参数,并将解析结果返回给args变量。之后,程序根据接受到的参数输出“Hello, [name]!”或输出“Hello, World!”。

解析位置参数

除了选项参数之外,我们还可以解析位置参数。示例代码如下:

import argparse

parser = argparse.ArgumentParser(description='This is a description of the program.')
parser.add_argument('name', help='Name of the user')
args = parser.parse_args()

print('Hello, {}!'.format(args.name))

在终端中运行该程序,输入以下命令:

python example.py John

然后将输出以下结果:

Hello, John!

与之前的示例程序不同,现在的程序没有--name选项,而是使用了一个位置参数来传递用户名。创建位置参数时,只需将选项名称更改为相应的参数名称即可。

添加子命令

使用argparse模块,我们还可以创建一些子命令,从而为用户提供更多的操作方式。示例代码如下:

import argparse

parser = argparse.ArgumentParser(description='This is a description of the program.')

subparsers = parser.add_subparsers(title='subcommands')
parser_a = subparsers.add_parser('command_a', help='Description of command_a')
parser_a.add_argument('--name', '-n', help='Name of the user')
parser_a.set_defaults(func=lambda args: print('Hello from command_a, {}!'.format(args.name)))

parser_b = subparsers.add_parser('command_b', help='Description of command_b')
parser_b.add_argument('--count', '-c', type=int, help='Count of something')
parser_b.set_defaults(func=lambda args: print('Hello from command_b, count is {}!'.format(args.count)))

args = parser.parse_args()
args.func(args)

在上述程序中,我们使用add_subparsers()方法添加子命令,add_parser()方法添加具体的子命令。每个子命令都可以有自己的选项和参数。

在运行程序时,程序会根据传递的子命令名称调用相应的函数。通过调用set_defaults()方法将对应的函数赋给func属性。在最后,使用传递给func函数的参数执行对应的操作。

在终端中运行该程序,输入以下命令:

python example.py command_a -n John

然后将输出以下结果:

Hello from command_a, John!

或者输入以下命令:

python example.py command_b -c 10

然后将输出以下结果:

Hello from command_b, count is 10!

以上就是使用Python的argparse创建命令行实用程序的介绍。通过argparse模块,我们可以创建一个易于使用、易于维护的命令行实用程序,提高程序的可用性和开发效率。