📅  最后修改于: 2023-12-03 15:06:53.856000             🧑  作者: Mango
Python的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模块,我们可以创建一个易于使用、易于维护的命令行实用程序,提高程序的可用性和开发效率。