一、argparse简介
argparse
是 Python 标准库中用于解析命令行参数的模块。它提供了一种方便的方式来处理命令行输入,使得编写用户友好的命令行界面变得更加容易。
二、作用和优点
- 命令行参数解析:
argparse
允许开发者定义程序所需的命令行参数,并提供了一个灵活的机制来解析这些参数。 - 用户友好: 提供了清晰的帮助消息和错误提示,使得用户更容易理解和正确使用程序。
- 类型检查: 支持将命令行参数解析为不同的数据类型,例如整数、浮点数、布尔值等。
- 默认值: 允许为每个参数设置默认值,以便用户在不提供参数时使用默认值。
- 子命令: 支持定义子命令,使得可以构建更复杂的命令行界面。
- 自动生成帮助信息: 自动生成帮助信息,包括参数描述、默认值等,方便用户了解如何使用程序。
三、构建argparse三步法(有示例)
1.构造解析器: argparse.Argumentparse()
2.添加参数: .add_argment()
3.解析参数: .parse_args()
示例:
import argparse
def main():
parser = argparse.ArgumentParser(description='A simple program with command line arguments.')
parser.add_argument('--input', type=str, help='Input file path')
parser.add_argument('--output', type=str, help='Output file path')
parser.add_argument('--verbose', action='store_true', help='Enable verbose mode')
args = parser.parse_args()
# Accessing the parsed arguments
input_path = args.input
output_path = args.output
verbose_mode = args.verbose
# Your program logic here
print(f'Input file: {input_path}')
print(f'Output file: {output_path}')
print(f'Verbose mode: {verbose_mode}')
if __name__ == '__main__':
main()
在这个例子中,argparse
被用来定义三个命令行参数:--input
,--output
,和 --verbose
。用户可以通过在命令行中提供这些参数来控制程序的行为。例如:
python your_script.py --input input.txt --output output.txt --verbose
或者查看帮助:
python your_script.py -h
四、add_argument
函数的常用参数
name or flags
:parser.add_argument('-f', '--file', help='Input file path')
解释:
-f
是参数的短标志,--file
是参数的长标志,用户可以选择使用其中一个来指定参数。-
type
:parser.add_argument('--count', type=int, help='Number of iterations')
解释:
--count
参数的值将被解析为整数类型。 -
default
:parser.add_argument('--output', default='output.txt', help='Output file path')
解释:如果用户未提供
--output
参数,则使用默认值'output.txt'
。 -
required
:parser.add_argument('--input', required=True, help='Input file path')
解释:
--input
参数是必需的,用户必须提供该参数。 -
choices
:parser.add_argument('--mode', choices=['train', 'test'], help='Operating mode')
解释:
--mode
参数只能接受'train'
或'test'
作为值,其他值将被拒绝。 -
nargs
:parser.add_argument('--files', nargs='+', help='List of input files')
解释:
--files
参数可以接受一个或多个文件路径作为值,以列表的形式存储。 -
action
:parser.add_argument('--verbose', action='store_true', help='Enable verbose mode')
解释:如果提供了
--verbose
参数,则args.verbose
的值将为True
,否则为False
。 -
help
:parser.add_argument('--input', help='Input file path')
解释:提供有关
--input
参数的简短帮助信息,将显示在生成的帮助文档中。 -
metavar
:parser.add_argument('--count', metavar='N', help='Number of iterations')
解释:在帮助文档中显示的参数值的名称将为
N
。 -
const
:parser.add_argument('--mode', choices=['train', 'test'], const='train', nargs='?', help='Operating mode')
解释:如果用户未提供
--mode
参数,则args.mode
的值将为'train'
。如果提供了该参数但未提供值,则args.mode
的值也为'train'
。 -
dest
:parser.add_argument('--output', dest='output_file', help='Output file path')
解释:
args.output_file
将存储--output
参数的值。
推荐看的B站视频辅助理解: